시스템프로그래밍 2

[시스템프로그래밍] 컴파일과 런타임 스택

어셈블리 언어(.asm) "우리가 고급 언어로 프로그램을 만들면, 컴파일러가 이를 해석해서 어셈블리어로 만듭니다.이 어셈블리어는 또 다시 어셈블러를 통해 기계어로 번역됩니다." 라고 보통 설명하지만, 대부분의 경우에는 고급 언어 -> 중간 언어 -> 어셈블리어 = 기계어라고 보면 될 것 같습니다. 어셈블리어는 컴파일러마다 다르지만, 지금 듣는 수업 내용은 c언어로 설명하므로 앞으로 내용은 c언어를 기준으로 한다. C 프로그램이 컴파일이 되어 어셈블리어 명령어가 된 모습을 볼 수 있습니다. 다만 이때 중요한 건 Linker라는 특이한 애가 존재하고, 얘가 다른 라이브러리와 내가 만든 어셈블리어를 연결시켜 준다는 점이 중요합니다. 위에서 설명했다시피, 고급언어 -> 기계어는 굉장히 시간이 오래 걸리기 때문에..

[시스템프로그래밍] 컴파일러&인터프리터, 전처리기

[1] 컴파일러&인터프리터프로그래밍 언어의 구분1. low-level Langueages- 기계어 프로그램 > 실행 코드 or 목적 코드- CPU 종류마다 고유의 기계어가 존재 2. High-level Languages- 고급언어 프로그램> 소스코드- 인간의 자연언어와 유사하게 표현 > 이해도 ^- 프로그래머가 기계의 세부사항을 알 필요 x- c, c++, C#, java, basic, python, Lisp 등등 번역사용자가 작성하는 고급언어에서 컴퓨터가 이해할 수 있도록 기계어로 번역시킨다.방법1. 컴파일러: 전체 프로그램을 먼저 번역한 후 실행방법2. 인터프리터: 한 라인별로 번역한 후 바로 실행 컴파일 언어(c, c+, java)&소스코드 -> 컴파일러(전처리(preprocess)> 컴파일(Com..