내가 이해한 바가 맞다면, 컴파일이란
'사람이 쓴 코드를 컴퓨터가 이해할 수 있는 코드로 해석하는것'이다.
컴파일의 단계는 다음과 같다.
전처리 단계
이 글에서는 c 언어를 사용하기 때문에, cpp라는 전처리기를 사용한다.
검색해보니 c plus plus라서 c++이라고 한다.
.c 프로그램을 바탕으로 .i 프로그램을 생성한다.
컴파일 단계
컴파일러(cc1)는 텍스트파일 .i를 .s로 번역하며, 이 팔일에는 어셈블리어 프로그램이 저장된다.
어셈블리 단계
어셈블러(as)가 hello.s를 기계어 인스트럭션으로 번역하고, 이들을 재배치가능 목적프로그램의 형태로 묵어서 hello.o라는 목적파일에 결과를 저장한다.
hello.o는 사람이 봤을때 의미를 알 수 없는 데이터 뭉치로 보일 것이다.
링크 단계
printf.o 목적파일에 들어있는 printf를 호출하여 hello.o 파일과 결합한다. 링커 프로그램(ld)이 이 통합작업을 수행한다.
그 결과인 hello 파일은 실행가능한 목적파일(실행파일)로 멜모리에 적재되어 시스템에 의해 실행된다.
최신의 컴파일러들은 컴파일러의 성능이 좋아서 과정을 자세하게 알 필요는 없으나, c언어는 프로그램 작성할때부터 효율적인 기계어 코드를 짜기 위해 컴파일에대한 이해가 필요하다.
링크 에러 가 발생했을때 어떻게 해서 발생했는지, 어떻게 해결하는지, 애초에 문제가 발생 하지 않을 수 있을지 알게된다.
버스 : 컴퓨터 안 부품 또는 여러 장치사이를 연결해 데이터와 주소, 제어 신호 등 정보를 전송하는 통로(통신 시스템). 메인버스 생각하기
일반적으로 버스는 워드 단위로 데이터를 전송한다.
메인 메모리 : 보통 DRAM을 의미한다. SRAM은 캐시나 레지스트리.
프로세서 : CPU/주처리장치는 메인 메모리에 저장된 인스트럭션들을 해독(실행)하는 엔진이다. 프로세서의 중심에는 워드 크기의 저장장치(또는 레지스터)인 프로그램 카운터(PC)가 있다.
컴퓨터 시스템 1.4까지 읽어봤다.
뭔 1000페이지가 넘어가는데 이제 겨우 10페이지 읽었다.
다다음주 까지 300페이지까지 읽어야된다..
몹시 끔찍하다