[컴퓨터구조][기초] 목적 파일, 실행 파일
*해당 글은 '혼자 공부하는 컴퓨터구조 + 운영체제(강민철 지음)'을 참고하여 작성되었습니다.
*구체적인 예시와 함께 더 자세히 공부하고 싶으신 분들은 해당 책을 읽어보시기를 추천드립니다.
저번 시간에 컴파일 언어와 인터프리터 언어에 대해서 배웠습니다.
한 줄로 요약하면, 고급 언어가 저급 언어로 변환되는 대표적인 방법으로 컴파일 방식과 인터프리트 방식이 있다는 것이었죠?
이와 함께, 목적 코드를 언급했었습니다.
목적 코드에 대해서 다시 한 번 설명드리겠습니다.
목적 코드란, 컴파일러에 의해 저급 언어로 변환된 코드를 말합니다.
이렇게 목적 코드로 이루어진 파일을 목적 파일이라고 합니다.
또, 실행 코드로 이루어진 파일을 실행 파일이라고 합니다.
윈도우에서 .exe 확장자를 가진 파일이 대표적인 실행파일입니다.
그렇다면, 저급 언어로 된 목적 코드는 실행 파일과 같은 것일까요?
그렇지 않습니다.
예를 들어, 우리가 서로 연결된 여러 소스 코드를 작성했다고 해봅시다.
컴파일러를 통해, 각각의 소스 코드로부터 각각의 목적 코드가 만들어질 것입니다.
목적 파일이 생기는 것이죠?
그러나 이 목적 파일은 바로 실행할 수 없습니다.
각 목적 파일은 다른 목적 파일에 대해서 모르기 때문입니다.
서로 연결되어 있기 때문에 하나의 목적 코드만 가지고는 실행할 수 없는 것이죠.
때문에 이 코드들을 실행하려면, 각 목적 코드를 하나로 연결하는 과정이 필요합니다.
이처럼 여러 소스 코드나 데이터를 연결하여 실행 가능한 하나의 파일로 만드는 과정을 링킹(Linking)이라고 합니다.
그리고 이 링킹을 통해 만들어진 파일이 실행 파일입니다.
*요약*
정리해보면, 다음과 같습니다.
여러분이 프로그래밍 언어(고급 언어)로 작성한 코드는 컴퓨터가 이해할 수 없습니다.
컴퓨터는 저급 언어만 이해할 수 있기 때문이죠.
때문에 고급 언어를 저급 언어로 변환하는 과정이 필요합니다.
여기에는 컴파일 방식과 인터프리트 방식이 있습니다.
컴파일 방식의 경우, 컴파일러를 통해 소스 코드 전체가 저급 언어로 변환되어 목적 코드가 됩니다.
하지만 목적 코드를 컴퓨터가 바로 실행할 수는 없습니다.
여러 목적 코드를 하나의 실행 파일로 연결해야 하기 때문이죠. 이 과정을 링킹이라 합니다.
소스 코드가 어떻게 명령어로 변환되고 실행되는지를 간단히 알아보았습니다.
다음 시간부터는 명령어의 구조에 대해 알아보겠습니다.