명령어의 구조와 주소 지정 방식

   Cheat Sheet   

 

명령어의 구조

  • 연산 코드: 명령어가 수행할 연산
  • 오퍼랜드: 연산에 사용할 데이터가 저장된 위치 (또는 데이터 그 자체)
    • 주소 필드라고도 부름, 명령어 안에 여러 개의 오퍼랜드가 있을 수 있음

 

주소 지정 방식

  • 유효 주소: 연산 코드에 사용할 데이터가 저장된 위치
    • 주소 지정 방식은 유효 주소를 찾는 방법
  • 즉시 주소 지정 방식: 연산에 사용할 데이터 그 자체를 명시
  • 직접 주소 지정 방식: 유효 주소를 명시 (메모리 주소)
  • 간접 주소 지정 방식: 유효 주소의 주소를 명시
  • 레지스터 주소 지정 방식: 유효 주소를 명시 (레지스터 이름)
  • 레지스터 간접 주소 지정 방식: 유효 주소를 저장한 레지스터 이름을 명시 (데이터는 메모리에 저장)

 

명령어의 구조

명령어구조.png

  • 명령어는 연산 코드와 오퍼랜드로 구성됨
    • 연산 코드는 연산자, 오퍼랜드는 피연산자라고도 부름
  • 연산 코드가 담기는 영역을 연산 코드 필드라고 부르고, 오퍼랜드가 담기는 영역을 오퍼랜드 필드라고 부름

 

연산 코드 (operation code)

  • 명령어가 수행할 연산
  • 연산 코드 유형 4가지
    1. 데이터 전송: MOVE, STORE, LOAD, PUSH, POP
    2. 산술/논리 연산: ADD, MULTIPLY, AND, OR, COMPARE
    3. 제어 흐름 변경: JUMP, HALT, CALL, RETURN
    4. 입출력 제어: READ, WRITE, START IO, TEST IO
  • 연산 코드의 종류와 생김새는 CPU마다 다름

 

오퍼랜드 (operand)

  • 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치
    • 많은 경우 데이터가 저장된 위치를 명시함
  • 주로 메모리나 레지스터의 주소가 담기기 때문에 오퍼랜드 필드를 주소 필드라고 부름
  • 오퍼랜드는 명령어 안에 하나도 없을 수도 있고, 여러 개가 있을 수도 있음
    • 0-주소 명령어, 1-주소 명령어, 2-주소 명령어…

 

주소 지정 방식

  • 유효 주소(effective address): 연산 코드에 사용할 데이터가 저장된 위치
  • 주소 지정 방식(addressing mode): 연산에 사용할 데이터의 위치, 즉 유효 주소를 찾는 방법
  • 오퍼랜드 필드에 연산에 사용할 데이터를 직접 명시할 경우, 표현할 수 있는 데이터의 크기가 연산 코드의 크기만큼 작아짐 (전체 크기-연산 코드 크기)
  • 만약 오퍼랜드 필드 안에 메모리 주소를 담는다면, 표현할 수 있는 데이터의 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커짐

 

즉시 주소 지정 방식 (immediate addressing mode)

즉시주소지정방식.png

  • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
  • 가장 간단한 형태의 주소 지정 방식
  • 연산에 저장할 데이터의 크기가 작아질 수 있지만, 속도가 빠름
    • 데이터를 메모리나 레지스터에서 찾는 과정이 없기 때문에

 

직접 주소 지정 방식 (direct addressing mode)

직접주소지정방식.png

  • 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
  • 여전히 유효 주소를 표현할 수 있는 크기가 연산 코드의 비트 수만큼 줄어듦

 

간접 주소 지정 방식 (indirect addressing mode)

간접주소지정방식.png

  • 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식
  • 두 번의 메모리 접근이 필요하기 때문에 앞의 방식들보다 속도가 느림

 

레지스터 주소 지정 방식 (register addressing mode)

레지스터주소지정방식.png

  • 연산에 사용할 데이터를 저장한 레지스터의 이름을 오퍼랜드 필드에 직접 명시
  • 일반적으로 메모리(외부)에 접근하는 것보다 레지스터(내부)에 접근하는 속도가 더 빠름
  • 표현할 수 있는 레지스터 크기에 제한이 생길 수 있음

 

레지스터 간접 주소 지정 방식 (register indirect addressing mode)

레지스터간접주소지정방식.png

  • 연산에 사용할 데이터를 메모리에 저장하고, 그 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
  • 메모리에 접근하는 횟수가 한 번으로 줄어들기 때문에 간접 주소 지정 방식보다 빠름

 

각각의 방식이 오퍼랜드 필드에 명시하는 값

  1. 즉시 주소 지정 방식: 연산에 사용할 데이터
  2. 직접 주소 지정 방식: 유효 주소 (메모리 주소)
  3. 간접 주소 지정 방식: 유효 주소의 주소
  4. 레지스터 주소 지정 방식: 유효 주소 (레지스터 이름)
  5. 레지스터 간접 주소 지정 방식: 유효 주소를 저장한 레지스터 (데이터는 메모리에 저장)

 

 

출처: [3-2] 명령어의 구조

 

혼자 공부하는 컴퓨터 구조+운영체제 - 예스24

혼자 해도 충분합니다! 1:1 과외하듯 배우는 IT 지식 입문서이 책은 독학으로 컴퓨터 구조와 운영체제를 배우는 입문자가 ‘꼭 필요한 내용을 제대로 학습’할 수 있도록 구성했다. 뭘 모르는지

www.yes24.com