CS50 x edwith 강의를 들으며 정리한 공부 포스팅입니다.
핵심 개념
- 컴파일
- 컴파일러
- 오브젝트 코드
- 전처리
- 어셈블
- 링크
컴파일 과정
-
컴파일 - 소스 코드를 오브젝트 코드로 변환시키는 과정
-
소스 코드 - C언어와 같은 프로그래밍 언어로 작성한 코드
-
오브젝트 코드 - 기계 코드라고도 알려져 있음
-
0과 1로 이루어져 있고 컴퓨터에게 프로그램이 어떻게 실행되어야 하는지 알려주는
코드
-
(컴파일 과정)
전처리(Precompile)
- 실질적인 컴파일이 이루어지기 전에 무언가를 실행하라고 알려줌
- #include는 전처리기에게 다른 파일의 내용을 포함시키라고 알려줌.
- #include
-> stdio.h 파일의 내용이 #include부분에 포함됨.
- #include
- #include는 전처리기에게 다른 파일의 내용을 포함시키라고 알려줌.
컴파일(Compile)
-
컴파일러 - C 코드를 어셈블리어라는 저수준 프로그래밍 언어로 컴파일
-
어셈블리
-
C보다 연산의 종류는 적으나 여러 연산들이 함께 사용되면 C에서 할 수 있는 모든것
들 수행 가능
-
-
컴파일러는 컴퓨터가 이해할 수 있는 언어와 최대한 가까운 프로그램으로 만들어줌.
-
소스 코드에서 오브젝트 코드로 변환하는 전체 과정 혹은
-
구체적으로 전처리한 소스 코드를 어셈블리 코드로 변환시키는 단계를 말하기도 함.
어셈블(Assemble)
-
어셈블리 코드를 오브젝트 코드로 변환
-
CPU가 프로그램을 어떻게 수행할지 알려주는 연속된 0과 1들의 형태로 바꿔주는
작업
-
이 변환작업은 어셈블러라는 프로그램이 수행
-
링크(Link)
-
여러 개의 파일로 이루어져 있어 하나의 오브젝트 파일로 합쳐져야 할 때 필요한 단계
-
컴파일 하는 동안에 CS50 라이브러리를 링크하면 오브젝트 코드는
Getint()나 GetString() 같은 함수를 어떻게 실행할 지 알 수 있게 됨.
-
Comments