"컴퓨터 시스템 (김형신 옮김)" 책을 바탕으로 정리한 내용이다.
: 소스파일(hello.c)을 실행파일(hello)로 번역
linux> gcc -o hello hello.c
: 위에서 언급한 번역은 네 단계에 거쳐 실행된다. 각 단계를 실행하는 프로그램들을 합쳐 컴파일 시스템이라고 한다.
#include <stdio.h>
int main()
{
printf("hello, world\n")
return 0;
}
[컴파일 4단계]

int main()
{
printf("hello, world\n")
return 0;
}
> 어셈블리어화
main :
subq $8, %rsp
movl $.LCO, $edi
call puts
movl $0, %eax
addq $8, %rsp
ret
어셈블러(as) >>> 뭔말이야??
: '~.s' -> 기계어 인스트럭션으로 번역 -> '~.o'(재배치 가능 목적프로그램 형태의 목적파일)로 저장
: 위의 목적파일은 함수의 인스트럭션을 인코딩하기 위한 17바이트 바이너리 파일이다
링커
: '~.o'에 포함된 또다른 목적파일(가령 'printf.o')과 결합
: 그 결과 '~.o'는 실행파일로 메모리에 쌓이고 실행된다.