[CS] 3. 명령어

eunoia73·2025년 3월 31일
1

TIL

목록 보기
20/32

1. 소스코드와 명령어

  • 고급언어 : 사람이 이해하고 작성하기 쉽게 만들어진 언어

  • 저급언어 : 컴퓨터가 직접 이해하고 실행할 수 있는 언어

    • 기계어 : 0과 1의 명령어 비트로 이루어진 언어 (ex. 0101 0101)
    • 어셈블리어 : 0과 1로 표현된 기계어를 읽기 편한 형태로 변역한 언어 (ex. push rbp)

1) 고급언어를 저급언어로 변환하는 방법

  1. 컴파일 방식
  • 컴파일 언어 - 컴파일러에 의해 소스코드 전체가 저급 언어로 실행되는 언어
    ex. C언어
  • 목적 코드 - 컴파일러를 통해 저급 언어로 변환된 코드
  1. 인터프리트 방식
  • 인터프리트 언어 - 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 언어
    ex. Python

2) 컴파일 방식과 인터프리트 방식의 차이

컴파일 방식 - 소스 코드 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않는다.
인터프리트 방식 - 소스 코드 인터프리트 중 오류가 발생하면 오류 발생 전까지의 코드는 실행된다.

일반적으로 컴파일 언어가 인터프리터 언어보다 빠르다
→ 컴파일을 통해 나온 목적 코드는 컴퓨터가 실행할 수 있는 저급 언어이지만, 인터프리터 언어는 소스 코드 마지막에 이를 때까지 한 줄씩 저급 언어로 해석하며 실행해야 하기 때문이다.

2. 명령어의 구조

명령어 - 연산 코드 + 오퍼랜드

연산 코드 (연산자) - 명령어가 수행할 연산
데이터 코드, 산술/논리 연산, 제어 흐름 변경, 입출력 제어

오퍼랜드 operand (피연산자) - 연산에 사용될 데이터, 연산에 사용할 데이터가 저장된 위치(주소)

주소 지정 방식

1) 즉시 주소 지정 방식 - 연산에 사용될 데이터를 오퍼랜드 필드에 직접 명시

2) 직접 주소 지정 방식 - 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식

3) 간접 주소 지정 방식 - 유효 주소의 주소를 오퍼랜드 필드에 명시. 두 번의 메모리 접근이 필요하므로 상대적으로 느림

4) 레지스터 주소 지정 방식 - 연산에 사용할 데티어를 저장한 레지스터를 오퍼랜드 필드에 직접 명시. 직접 주소 지정 방식과 비슷함

5) 레지스터 간접 주소 지정 방식 - 연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법

스택과 큐

스택 stack - 한 쪽 끝이 막혀있는 저장공간
LIFO(후입선출), PUSH, POP

큐 Queue - 양 쪽이 뚫려있는 저장공간
FIFO(선입선출)


[혼자 공부하는 컴퓨터구조 + 운영체제] 책을 읽고 정리한 기록입니다.

0개의 댓글