컴퓨터 구조 - 8. Code to Executable File

JeongSH·2024년 10월 6일

컴퓨터 구조

목록 보기
8/11

네이티브 컴파일 언어 (C, C++)에 해당되는 내용

과정

  1. Source Code가 작성된다.
  2. 해당 코드는 컴파일러를 통해 어셈블리 언어로 변형된다.
  3. 해당 어셈블리 언어는 어셈블러를 통해 Machine Language로 변환된다.
  4. 각 모듈에 따라 Machin Language로 변환된 내용이 포함된 Object File이 생성된다.
  5. Linker를 통해 Object File들과 외부 Library를 합쳐 실행 가능한 파일 (Executable File)이 생성된다.
  6. Loader를 통해 Disk에서 Executable File을 불러와 실행

Object File 정보

  1. Header: Object File의 메타 정보(크기, 위치...)
  2. Text Segement: Machine Language Code 포함
  3. Static Data Segement: 프로그램 실행 동안 할당된 데이터들
  4. Relocation info: 재할당이 필요한 데이터들의 정보 (외부 의존 변수)
  5. Symbol Table: 전역 definiations 와 외부 참조 정보
  6. Debug Info: 디버깅 정보

Linker

따로 연결된 Module을 하나로 연결

  1. Object File들을 하나로 연결
  2. label들의 주소들 결정
  3. 외부 참조 해결 후 내부 참조 해결

Loader

  1. 헤더를 읽어서 Segement의 크기를 읽는다.
  2. 주소들이 저장될 공간을 만든다.
  3. Text를 읽고 데이터를 메모리에 할당한다.
  4. 파라미터를 스택에 할당한다.
  5. 레지스터를 초기화한다.
  6. 시작 루틴을 브랜치한다.

Dynamic Linking

  1. 실행이 되면 필요한 라이브러리를 Linking한다.
  2. 필요한 라이브러리의 버전을 바꾸면 동적으로 버전을 변경하여 실행할 수 있다.

0개의 댓글