프로그램은 어떻게 돌아가는가?
프로그램의 본질은 명령이다.
프로그래머는 소스 코드를 작성하고 작성한 소스 코드는 일련의 과정을 거쳐, 컴퓨터가 알아들을 수 있는 명령어로 바뀌게 된다.
CPU는 2진수를 계산하는 어떤 기계 장치로 생각할 수 있다. 여기에는 다양한 질문이 있다.
- 왜 2진수밖에 사용할 수 없는가?
- 2진수는 어떻게 계산되는가?
- 작성된 코드는 어떻게 명령어로 번역되는가?
컴파일러: 소스 파일을 실행 파일로 만드는 프로그램 소스 파일: 인간이 작성한 코드, 실해파일: 기계 명령어로 변환
- lexical analysis
- Parsing: 읽은 토큰을 트리로 만드는 단계
- semantic analysis
- parsing으로 만든 트리가 문제 없는지 확인하는 단계
- 코드 생성
- 중간 코드를 어셈블리어 코드로 변환하는 단계
- 어셈블리어 코드를 다시 기계 명령어로 변환함
- lexical analysis와 parsing 차이
- lexical analysis는 토큰 자체를 찾아내는 것, parsing은 찾은 토큰을 바탕으로 트리를 만들어내는 것
링커: 컴파일러가 생성한 대상 파일 여러개를 하나로 묶어 하나의 최종 실행 파일을 만들어내는 프로그램
- 심벌 해석
- 실행 파일 생성
- 재배치