-
Compile이란??Programming/CS 2020. 9. 15. 17:20
코딩 공부를 하다 보면 Compile, Compiler라는 단어를 많이 듣게 됩니다.
오늘은 compile에 대해서 공부해보려 합니다!
컴퓨터는 2진법 0, 1만을 사용해서 모든것을 표현합니다.
그렇다면 어떻게 우리가 입력하는
let num = 11
같은 코드를 어떻게 컴퓨터가 이해할까요??
우리가 코드를 입력하면 다음과 같은 4가지의 일이 일어나게 됩니다.
- Preprocessing
- Compiling
- Assembling
- Linking
하나하나 간단하게 살펴보겠습니다!
PREPROCESS(전처리)
전처리는 Preprocessor(전처리기)가 수행합니다.
전처리기는 컴파일이 되기전에 해야 할 것을 실행하는 역할을 합니다.
C언어에서는
#include<stdio.h>
와 같은 코드를 컴파일 전에 추가하는 단계를 말합니다.
COMPILE(컴파일)
컴파일은 Compiler(컴파일러)가 우리가 작성한 소스코드를 assembly code로 바꾸는 행위를 말합니다.
어셈블리 코드란 우리가 사용하는 코드보다 저수준 언어로 다음과 같은 코드입니다.
0000h: LOD A,[1005h] ADD A,[1001h] STO [1005h],A
아주 옛날에는 위와 같이 코딩을 했다고 합니다… 하지만 이 코드도 완전한 0과 1으로 구성돼있진 않습니다.
ASSEMBLE(어셈블)
어셈블은 Assembler(어셈블러)가 컴파일러가 변환한 어셈블리 코드를 machine code로 바꾸는 행위를 말합니다.
머신 코드는 아래와 같이 생겼습니다.
드디어 컴퓨터가 이해할 수 있는 0과 1로 바뀌었습니다.
LINK(링크)
링크는 Linker(링커)가 여러 개의 파일에 나뉜 머신 코드들을 합쳐주는 행위를 말합니다.
코드를 짤때 한파일에 모든 코드를 담지는 않겠죠? 그리고 누군가가 구현해 놓은 코드들도 가져와서 사용하게 됩니다.
이렇게 여러개로 나뉜 파일들을 한 가지로 합치는 것을 링크라고 합니다.
이 네가지의 과정을 거쳐야 우리가 작성한 소스코드가 컴퓨터가 이해할 수 있는 머신 코드로 변환됩니다.
그리고 이 네 과정은 Xcode에서 알아서 처리해줍니다.
그리고 4가지과정을 모두 합쳐 Compile 한다고 표현합니다.
728x90'Programming > CS' 카테고리의 다른 글
OS - Scheduling Algorithm (0) 2021.11.18 OS - Process Scheduling (0) 2021.11.09 OS - Kernel (0) 2021.11.07 OS - 운영체제 기본 (0) 2021.11.05