Post

명령어

명령어

명령어의 구조

연산 코드

  • 명령어에서 수행할 연산를 나타냄
  • 연산 코드의 종류와 생김새는 CPU 마다 다름

연산 코드 종류

CPU 마다 연산 코드의 종류와 생김새가 다르기 때문에, 연산 코드 자체보단 연산의 종류가 중요

1. 데이터 전송
  • MOVE - 데이터를 옮겨라
  • STORE - 메모리에 저장하라
  • LOAD(FETCH) - 메모리에서 CPU로 데이터를 가져와라
  • PUSH - 스택에 데이터를 저장하라
  • POP - 스택의 최상단 데이터를 가져와라

2. 산술/논리 연산
  • ADD / SUBTRACT / MULTIPLY / DIVIDE - 덧셈 / 뺄셈 / 곱셈/ 나눗셈을 수행하라
  • INCREAMENT / DECREMENT - 오퍼랜드에 1을 더하라 / 빼라
  • AND / OR / NOT - AND / OR / NOT 연산을 수행하라
  • COMPARE - 두 숫자나 TRUE / FALSE 값을 비교하라

3. 제어 흐름 변경
  • JUMP - 특정 주소로 실행 순서를 옮겨라(실행하라)
  • CONDITIONAL JUMP - 특정 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라(실행하라)
  • HALT - 프로그램의 실행을 멈춰라
  • CALL - 함수 실행 연산, 리턴 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라(실행하라)
  • RETURN - CALL을 호출할 때 저장했던 주소로 돌아가라

4. 입출력 제어
  • READ(INPUT) - 특정 입출력 장치로부터 데이터를 읽어라
  • WRITE(OUTPUT) - 특정 입출력 장치로 데이터를 써라
  • START IO - 입출력 장치를 시작하라
  • TEST IO - 입출력 장치의 상태를 확인하라

오퍼랜드

  • 연산에 사용될 데이터나 유효 주소를 나타냄

    유효 주소(effective address) - 연산에 사용될 데이터가 저장된 위치
    ※ 오퍼랜드에는 대부분 유효 주소가 저장되기 때문에, 주소 필드라고도 불린다.

  • 명령어에는 오퍼랜드가 0 ~ 3개가 있을 수 있고, 오퍼랜드의 개수에 따라 n-주소 명령어로 불린다.

명령어 주소 지정 방식(addressing modes)

  • 유효 주소를 찾는 방법
1. 즉시 주소 지정 방식(immediate addressing mode)

  • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
  • 연산에 사용할 수 있는 데이터의 크기가 작지만, 연산 속도 빠름

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

  • 메모리에 저장된 데이터의 유효 주소를 오퍼랜드 필드에 직접 명시
  • 유효 주소를 표현할 수 있는 크기 제한이 있음

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

  • 메모리에 저장된 데이터의 유효 주소의 주소를 오퍼랜드 필드에 명시
  • 유효 주소 표현 크기 제한이 없지만, 연산 속도 느림

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

  • 레지스터에 저장된 데이터의 유효 주소를 오퍼랜드 필드에 명시
  • 메모리에 접근하는 속도보다 레지스터에 접근하는 속도가 더 빠름

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

  • 메모리에 저장된 데이터의 유효 주소를 레지스터에 저장하고, 그 레지스터의 주소를 오퍼랜드 필드에 명시

출처

  • 강민철. 혼자 공부하는 컴퓨터 구조 + 운영체제: 한빛미디어, 2022.
This post is licensed under CC BY 4.0 by the author.