1.2 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다

2025. 3. 20. 17:32·CS:APP

용어설명

  • Instruction (인스트럭션 = 명령어)
    • 컴퓨터 프로그램이 실행되는 과정에서 **CPU에 의해 직접 해석되고 실행** 되는 **기계 명령어**
      • 기본 구성 (opcode + operand)
        • Opcode (연산코드)
          • 인스트럭션이 수행할 작업을 지정하는 코드
          • 예시 : 산술 연산, 데이터 이동, 분기지정 등
        • Operand (피연산자)
          • 연산에 사용될 데이터나 주소 정보를 포함
          • 하나 이상의 피연산자가 있을 수 있음
          • 예시 : 레지스터, 메모리주소, 상수 등
        • Instruction Format (인스트럭션 포맷)
          • 인스트럭션은 고정 길이 또는 가변 길이의 포맷을 가짐
          • 포맷에 따라 opcode와 operand의 위치와 크기가 결정
        • 실행 과정
          • CPU 내 하드웨어와 제어유닛이 협력하여 수행되는 전체적인 처리 과정
          • Fetch (페치): CPU의 제어 유닛이 메모리에서 다음 실행할 인스트럭션을 가져옴
          • Decode (디코드) : 가져온 인스트럭션을 해석하여 어떤 작업을 수행할지 결정. 이 단계에서 Opcode와 Operand를 구분
          • Execute (실행) : 실제 연산이 수행되며, 연산 결과가 레지스터나 메모리에 저장
          • 메모리 접근 : 필요한 경우 인스트럭션은 추가적으로 메모리에서 데이터를 읽거나 씀
          • Write-back (쓰기) : 연산 결과를 다시 저장하는 단계

내용

  • 시스템에서 실행하기 위해서는 다른 프로그램들에 의해 저급(low level) 기계어 인스트럭션 들로 번역되어야 한다
    • 번역 과정
      • 인스트럭션은 실행가능 목적 프로그램 (또는 목적 파일)으로 합쳐져, 바이너리 디스크파일로 저장
      • 컴파일러 드라이버 는 유닉스 시스템에서 아래와 같이 소스파일에서 오브젝트 파일로 번역
        linux> gcc -o hello hello.c
      • GCC 컴파일러 드라이버는 소스파일 hello.c를 실행파일인 hello로 번역
      • 이는 총 4개의 단계를 거쳐 실행 (컴파일 시스템) 
        • 컴파일 시스템 
          • 전처리 단계 : cpp(전처리기)에 의해 C 프로그램(hello.c)을 # 문자로 시작하는 디렉티브에 따라 수정
            • 결과 : hello.i 로 끝나는 새로운 C 프로그램(전처리된 소스코드)
          • 컴파일 단계 : cc1(컴파일러)에 의해 hello.s로 번역(어셈블리어)
          • 어셈블리 단계 : as(어셈블러)에 의해 기계어로 번역, 재배치 목적프로그램 으로 묶어 목적프로그램 (hello.o, 바이너리파일)으로 저장
          • 링크 단계 : ld(링커 프로그램)에 의해 어셈블리단계를 거쳐온 바이너리파일과, 표준 C 라이브러리의 호출된 함수의 목적파일을 불러와 통합작업을 수행
            • 결과 : 실행가능 목적파일(실행파일)로 메모리 적재, 실행

 

728x90

'CS:APP' 카테고리의 다른 글

GCC는 C를 어떻게 기계어로 짜깁기할까? - CS:APP 3.2 요약과 인사이트  (0) 2025.04.07
암달의 법칙 (Amdahl's law)  (0) 2025.04.07
캐시와 저장장치의 상관관계  (0) 2025.03.21
1.4 프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다  (0) 2025.03.20
1.1 정보는 비트와 컨텍스트로 이루어진다 (ASCII, Text/non-Text file, Context)  (0) 2025.03.17
'CS:APP' 카테고리의 다른 글
  • 암달의 법칙 (Amdahl's law)
  • 캐시와 저장장치의 상관관계
  • 1.4 프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다
  • 1.1 정보는 비트와 컨텍스트로 이루어진다 (ASCII, Text/non-Text file, Context)
ahpicl64
ahpicl64
in the clouds
  • ahpicl64
    구름
    ahpicl64
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • WIL (4)
      • Jungle (36)
      • AWS (2)
      • SQL (2)
      • CS:APP (17)
      • Algorithm (10)
      • K8s (7)
      • 자료 구조 (10)
      • Spring (4)
      • React (0)
      • 운영체제 (1)
      • 기타등등 (2)
      • 이야기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Spring
    알고리즘
    AWS
    github actions
    CSAPP
    python
    IAM
    DB
    자료구조
    트러블슈팅
    queue
    CloudFront
    Spring boot
    k8s
    S3
    EC2
    어셈블리
    부하테스트
    컴퓨터시스템
    DevOps
  • 02-21 18:10
  • hELLO· Designed By정상우.v4.10.3
ahpicl64
1.2 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다
상단으로

티스토리툴바