안녕하세요.
현재 프로그램 실행 시 내부 동작 관련하여 공부 중인데 쉽게 정리가 되질 않습니다.
작성한 프로그램 소스를 실행시키면 전처리, 컴파일(컴파일러, 어셈블러, 링커) 과정을 거쳐
하나의 오브젝트 파일이 생성되고 이것이 즉 .exe 파일인 것 까지 알게되었습니다.
생성된 .exe 파일 실행 후의 과정에 대해서 여러 인터넷의 자료들을 뒤져서 공부했지만 좀 모호한 부분이 있어 이렇게 질문 올립니다.
- 질문 1.
어셈블러를 통해 생성된 .obj 파일에는 이미 코드 영역, 데이터 영역 배치될 정보들이 포함되어 있는 것으로 알고 있습니다. 힙, 스택은 프로그램 동작중에 실시간으로 배치되는 것으로 알고 있구요.
그렇다면 여러 오브젝트 파일들을 하나로 합치는 링커는 파일들을 합치는 과정에서 각각의 오브젝트 파일들의 동일한 영역들끼리(코드, 데이터) 모아놓고 가상메모리의 몇 번지에 집어넣을지에 대한 정보를 저장하는 링커 스크립트 파일을 만들고 하나의 오브젝트 파일로 합치는 것(실행 파일을 생성하는 것)이 맞는 것인가요??
- 질문 2.