ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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로 바꾸는 행위를 말합니다.

     

    머신 코드는 아래와 같이 생겼습니다.

    [각주:1]">
    출처: https://marketbusinessnews.com/financial-glossary/machine-code/[각주:2]

    드디어 컴퓨터가 이해할 수 있는 0과 1로 바뀌었습니다.

     

     

     

     

    LINK(링크)

    링크는 Linker(링커)가 여러 개의 파일에 나뉜 머신 코드들을 합쳐주는 행위를 말합니다.

     

    코드를 짤때 한파일에 모든 코드를 담지는 않겠죠? 그리고 누군가가 구현해 놓은 코드들도 가져와서 사용하게 됩니다.

     

    이렇게 여러개로 나뉜 파일들을 한 가지로 합치는 것을 링크라고 합니다.

     

     

     

     

     

    이 네가지의 과정을 거쳐야 우리가 작성한 소스코드가 컴퓨터가 이해할 수 있는 머신 코드로 변환됩니다.

     

    그리고 이 네 과정은 Xcode에서 알아서 처리해줍니다.

    그리고 4가지과정을 모두 합쳐 Compile 한다고 표현합니다.

    1. Machine Code 출처 [본문으로]
    2. Machine Code 출처 [본문으로]
    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
Designed by Tistory.