til(3)

경용·2023년 7월 12일
0
post-thumbnail

프로그래밍 언어 소개
프로그래밍 언어란?
컴퓨터 시스템을 구동시키는 소프트웨어를 작성하기 위한 언어
고급 언어일수록 사람이 사용하는 언어에 가깝다.
저급 언어
기계어 : 0과 1
어셈블리어 : 기계어에 1대1 대응되는 저급 언어, CPU의 구조파악, 상세한 디버깅등을 위해 필요, ARM 어셈블리어, AVR 어셈블리어등
https://ko.wikipedia.org/wiki/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%EC%96%B4
고급 언어
C, C#, C++, Python, Java, Fortran, Pascal, Perl, R, Ruby, SQL

C언어의 이해
프로그래밍 언어란 엑셀, 게임, 모바일 앱 등의 프로그램을 만들 때 사용하는 언어
C 이외에도 C++, Java, Basic, Perl, Lisp, Python등 다양
‘프로그래머’들이 제작
간단한 프로그램(계산기, 메모장)은 혼자서 만들기도 하지만 다양한 기능의 복잡한 프로그램 (엑셀, 포토샵 같은 주로 상용 판매되는 프로그램)은 수십 명 또는 수백 명이 역할을 분담해서 만들기도 함)
C 언어(C++ 포함)를 가장 많이 사용함(?)-정답은 아님
(프로그래밍 언어 점유율 사진 첨부)
안드로이드 앱을 작성할 때에는 자바, iOS앱을 작성할때는 Object C를 사용
PC 운영체제나 PC 운영체제에서 작동되는 응용 프로그램을 작성할 경우에는 C나 C++ 등을 기본으로 사용함.
임베디드 시스템은 거의 100% C언어를 구성됨
임베디드 시스템은 대부분 1%정도의 어셈블리어와 99%의 C언어로 구성
리눅스 커널
RTOS (Real Time OS)
C 의 특징
이식성이 좋다
한번 만들어 놓으면 윈도우즈 운영체제 외에 유닉스나 기타 운영체제에서도 사용 가능함.

C 언어로 작성된 코드를 여러 종류의 CPU에 적용이 가능하다.
주로 C 언어로 작성된 리눅스 커널은 현재 총 31가지 CPU core에 적용 가능
https://github.com/torvalds/linux/tree/master/arch

하드웨어와 관련된 부분까지 접근할 수 있다
시스템 프로그래밍이 가능함.
이유 : 주소(address)접근이 불가능하거나 bit operation등이 정교하지 않은 언어는 하드웨어 제어가 어려움

구문이 간결하고 명확하다
다른 프로그래밍 언어보다 훨씬 간결하고 편리하나 최근에는 C의 영향을 받아 다른 언어들도 간결해지는 추세임.
C를 익히면 다른 프로그래밍 언어도 쉽게 익힐 수 있다
C를 잘할 수 있다면 거의 대부분의 다른 프로그래밍 언어를 쉽게 익힐 수 있다.
이미 작성되고 공개된 코드가 많아 예제가 풍부하다.C 컴파일러의 종류
C 컴파일러란 C언어로 만들어진 소스를 컴파일하여 기계가 이해할 수 있는 기계어로 변환하는 프로그램
제조사에 따라 여러 종류가 존재
Borland사 제품 : Turbo C, Turbo C++, Borland C++
마이크로 소프트사 제품 : Visual Studio ,Visual C++
GNU 계열 : gcc, g++

임베디드 시스템에서의 C 컴파일러
위의 컴파일러들은 모두 x86계열의 CPU에서 동작하는 프로그램 생성
실행될 CPU(정확히 말하면 CPU내부의 코어의 종류에 따라 그에 맞는 C 컴파일러를 사용해야 함 -> 크로스 컴파일러
AVR용 C 컴파일러
AVR Studio : http://www.atmel.com/tools/atmelstudio.aspx
WinAVR : http://winavr.sourceforge.net/
ARM용 C 컴파일러
RVDS : http://www.arm.com/products/tools/software-tools/rvds/index.php
ARM GCC : https://launchpad.net/gcc-arm-embedded

C 컴파일러의 종류
C 컴파일러란 C언어로 만들어진 소스를 컴파일하여 기계가 이해할 수 있는 기계어로 변환하는 프로그램
제조사에 따라 여러 종류가 존재
Borland사 제품 : Turbo C, Turbo C++, Borland C++
마이크로 소프트사 제품 : Visual Studio ,Visual C++
GNU 계열 : gcc, g++

임베디드 시스템에서의 C 컴파일러
위의 컴파일러들은 모두 x86계열의 CPU에서 동작하는 프로그램 생성
실행될 CPU(정확히 말하면 CPU내부의 코어)의 종류에 따라 그에 맞는 C 컴파일러를 사용해야 함 -> 크로스 컴파일러
AVR용 C 컴파일러
AVR Studio : http://www.atmel.com/tools/atmelstudio.aspx
WinAVR : http://winavr.sourceforge.net/
ARM용 C 컴파일러
RVDS : http://www.arm.com/products/tools/software-tools/rvds/index.php
ARM GCC : https://launchpad.net/gcc-arm-embedded

<수업 중 많이 나온 이름 ARM 찾아보기>

CPU Core
말 그대로 CPU의 핵심으로 기계어를 해석하고 실행하는 내부 block
흔히 dual 코어, quad 코어할 때의 그 코어를 말함
꼭 알아 두어야 할 코어들 -> 기술면접에 많이 나와요!!
Core를 개발한 업체에서만 사용하는 경우와 Core기술을 외부 CPU제조사 판매하는 경우로 나뉨

컴파일 - 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 바꾸는 과정
링크 - 여러 개의 ‘오브젝트 파일’을 하나의 ‘실행 파일’로 묶어주는 과정

profile
문제를 객관적으로. 그 후 true / false

0개의 댓글