[ TIL 02 ] CS50 강의 노트(2)
부스트코스 <David J. Malan - 모두를 위한 컴퓨터 과학(CS50 2019)> 강의를 듣고 작성한 내용입니다.
컴파일링
소스 코드
: 우리가 직접 작성한 코드머신 코드
: 2진수로 작성된, 컴퓨터가 이해할 수 있는 코드- 소스 코드를 머신 코드로 변환하는 작업을
컴파일러
라는 프로그램이 수행해준다. - C언어에서는 make 툴을 이용하면 소스 파일의 링크, 컴파일, 빌드 작업을 자동화해준다.
이런 명령어를 실행할 때 아래 네 단계의 과정을 거치게 된다.1.
전처리
(Precompile)- 전처리기에 의해 수행된다.
- #으로 시작되는
C 소스 코드
가 전처리기에 실질적인 컴파일이 이루어지기 전에 무언가를 실행하라고 알려준다.// 예시 #include <stdio.h>
2.
컴파일
(Compile)- 컴파일러라고 불리는 프로그램이 C 소스 코드를
어셈블리어
라는 저수준 프로그래밍 언어로 컴파일한다. - C 코드를 어셈블리 코드로 변환시켜줌으로써
컴퓨터가 이해할 수 있는 언어와 최대한 가까운 프로그램으로
만드는 것.
3.
어셈블
(Assemble)- 어셈블러가 어셈블리 코드를
오브젝트 코드
로 변환시킨다. - 컴퓨터의 중앙처리장치가 프로그램을 어떻게 수행해야 하는지 알 수 있는 명령어 형태인
연속된 0과 1들
로 바꿔주는 것. - 소스 코드에서 오브젝트 코드로 컴파일 되어야 할 파일이 한 개 뿐이라면, 컴파일 작업이 여기서 마무리된다. 그렇지 않은 경우, 링크 단계가 추가된다.
4.
링크
(Link)프로그램이 여러 개의 파일로 이루어져 있어 하나의 오브젝트 파일로 합쳐져야 한다면
, 이 단계가 추가된다.- 여러 개의 다른 오브젝트 코드 파일을
실행 가능한 하나의 오브젝트 코드 파일로
합쳐준다.
메모리
- 컴퓨터 안에서는 RAM이라고 불리는 물리적 칩이 메모리 역할을 한다.
- 문자열의 저장
- 문자열(string)은 문자(char)의 배열로 저장된다.
- 문자열의 각 문자는 메모리상에 연이어서 저장되며,
문자열 끝에는 NULL 종단 문자가 포함
된다. 때문에(문자 개수 + 1)개 만큼의 메모리를 차지
한다.
- 메모리 구조
머신 코드 영역
: 프로그램이 실행될 때 그 프로그램이컴파일된 바이너리
가 저장됨.글로벌 영역
: 프로그램 안에서 저장된전역 변수
가 저장됨.힙 영역
: 메모리 할당 함수(malloc)로부터할당된 메모리의 데이터
가 저장됨.스택 영역
:프로그램 내의 함수와 관련된 것
들이 저장됨.
Author And Source
이 문제에 관하여([ TIL 02 ] CS50 강의 노트(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kgorae/CS50-강의-노트2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)