(CS50)-프로그래밍 응용(컴파일)

CS50 x edwith 강의를 들으며 정리한 공부 포스팅입니다.

그림출처

핵심 개념

  • 컴파일
  • 컴파일러
  • 오브젝트 코드
  • 전처리
  • 어셈블
  • 링크

컴파일 과정

  • 컴파일 - 소스 코드를 오브젝트 코드로 변환시키는 과정

  • 소스 코드 - C언어와 같은 프로그래밍 언어로 작성한 코드

  • 오브젝트 코드 - 기계 코드라고도 알려져 있음

    • 0과 1로 이루어져 있고 컴퓨터에게 프로그램이 어떻게 실행되어야 하는지 알려주는

      코드

컴파일 과정

(컴파일 과정)

전처리(Precompile)

  • 실질적인 컴파일이 이루어지기 전에 무언가를 실행하라고 알려줌
    • #include는 전처리기에게 다른 파일의 내용을 포함시키라고 알려줌.
      • #include -> stdio.h 파일의 내용이 #include부분에 포함됨.

컴파일(Compile)

  • 컴파일러 - C 코드를 어셈블리어라는 저수준 프로그래밍 언어로 컴파일

  • 어셈블리

    • C보다 연산의 종류는 적으나 여러 연산들이 함께 사용되면 C에서 할 수 있는 모든것

      들 수행 가능

  • 컴파일러는 컴퓨터가 이해할 수 있는 언어와 최대한 가까운 프로그램으로 만들어줌.

  • 소스 코드에서 오브젝트 코드로 변환하는 전체 과정 혹은

  • 구체적으로 전처리한 소스 코드를 어셈블리 코드로 변환시키는 단계를 말하기도 함.

어셈블(Assemble)

  • 어셈블리 코드를 오브젝트 코드로 변환

    • CPU가 프로그램을 어떻게 수행할지 알려주는 연속된 0과 1들의 형태로 바꿔주는

      작업

    • 이 변환작업은 어셈블러라는 프로그램이 수행

링크(Link)

  • 여러 개의 파일로 이루어져 있어 하나의 오브젝트 파일로 합쳐져야 할 때 필요한 단계

    • 컴파일 하는 동안에 CS50 라이브러리를 링크하면 오브젝트 코드는

      Getint()나 GetString() 같은 함수를 어떻게 실행할 지 알 수 있게 됨.

Comments