반응형
프로그램의 실행과정
전처리기 -> 컴파일러 -> 어셈블러 -> 링커
  • 단계 1: 전처리기에 의한 치환작업

전처리기는 '#include', '#define' 과 같이 '#'으로 시작하는 지시자의 지시에 따라서

적절히 변경하는 작업을 한다.

 

  • 단계 2: 컴파일러에 의한 번역

소스코드는 컴파일러에 의해서 어셈블리 코드로 번역된다.

CPU가 디자인될 때 CPU에게 일을 시키기 위한 명령어도 함께 디자인되는데,

어셈블리 코드란 이러한 명령어를 조합해서 만들어진 프로그램 코드를 의미한다.

만약, C와 같은 언어로 구현된 프로그램을 어셈블리 프로그램으로 변경해 주는 컴파일러가 없다면

우리는 이 명령어 체계를 익혀서 프로그램을 작성해야만 했을 것이다.

 

  • 단계 3: 어셈블러에 의한 바이너리 코드 생성

바이너리 코드란 1과 0으로만 구성되는 코드를 말한다.

컴파일러에 의해 번역된 어셈블리 코드는 컴퓨터에 의해 실행되기에 앞서서 바이너리 코드로 번역되어야 한다.

왜냐하면 컴퓨터는 오로지 1과 0만을 이해하기 때문이다.

 

  • 단계 4: 링커에 의한 연결과 결합

프로그램 내에서 참조하는 함수나 라이브러리들을 하나로 묶는 작업을 하는 것이다.

이 과정이 끝나면 실제로 실행 가능한 실행파일이 생성된다.

물론 이 실행파일은 컴퓨터가 실행해야 하는 바이너리 코드로 구성된다.

  • 단계 1. Fetch : 메모리상에 존재하는 명령어를 CPU로 가져오는 작업이다.
  • 단계 2. Decode : 가져다 놓은 명령어를 CPU가 해석하는 단계이다.
  • 단계 3. Execution : 해석된 명령어의 명령대로 CPU가 실행하는 단계이다.
반응형

+ Recent posts