[Etc/MicroProcessor]
고급 언어와 저급 언어, 컴파일러

2020. 4. 2. 17:52


컴파일러(Compiler)의 필요성컴퓨터에 내장된 마이크로 프로세서는 이진값을 갖는 명령어가 차례대로 실행되면서 작업을 처리한다.

프로그램이란 무엇인가?

프로그램은 작업을 처리하기 위해 명령어를 차례대로 배열한 것을 일컫는다. 하나의 프로그램은 아래 일련의 과정을 거친다.

프로그램의 순서도

사람이 컴퓨터가 이해하는 언어인 저급언어로 직접 프로그래밍을 하기에는 너무나도 비효율적이기 때문에 대부분 고급 언어인 C, Java, Python같은 고급 언어를 이용하여 프로그래밍하고 이를 컴파일러가 컴퓨터가 이해할 수 있도록 저급 언어인 기계어로 변환한다.

기계어와 어셈블리어란 무엇인가?

기계어 (Machine Language)

  • 기계어란 특정 비트에, 특정 의미가 있는 2진값을 설정하는 명령어를 나열한것이다.

어셈블리어 (Assembly Language)

  • 기계어를 사람이 연상하기 쉬운 니모닉(Mnemonic)과 연산 대상이라는 영문 단어로 바꿔 표현한것

어셈블러 (Assembler)

  • 어셈블리어로 작성된 원시프로그램을 기계어로 변환시키는 번역기이다.
  • 좋은 마이크로프로그래밍을 위해서는 모든 연산이 레지스터 내에서 이뤄져야한다.
    특정 행위를 하기위해서 주기억장치같은 다른 장치로 이동하게되면, 프로그램 성능이 순간적으로 저하하기 때문이다.

원시프로그램에서 실행 파일 생성

컴파일(Compile), 컴파일러(Compiler)

  • 고급 언어로 작성된 원시 프로그램을 기계어 목적 파일(Object File)로 번역하는 과정을 컴파일이라고 하며, 이를 수행하는 번역기를 컴파일러라고 한다.

어셈블(Assemble), 어셈블러(Assembler)

  • 어셈블리어로 작성된 원시 프로그램을 기계어 목적 파일(Object File)로 번역하는 과정을 어셈블이라고 하며, 이를 수행하는 번역기를 어셈블러라고 한다.

링크(Link), 링커(Linker)

  • 여러 개의 목적 파일(Object File)들을 연결하여 통합된 실행 파일로 만드는 과정을 링크라고 하며, 이를 수행하는 프로그램을 링커라고 한다. (흔히 C언어의 헤더파일, Python의 모듈 등을 Import 하여 사용하는것이 이 링커를 이용한 것이다.)

라이브러리 (Library)

  • 표준화된 이름과 매개 변수가 있는 함수로 작성한 후, 이것을 컴파일하여 목적 파일(Object File)을 생성하기 위해 필요한것이 이 라이브러리이다. C언어의 경우 sin, cos, tan, printf, scanf 등과 같은 함수들이 이에 해당한다.