본문 바로가기
컴퓨터구조

[혼자 공부하는 컴퓨터구조] 03-2. 명령어의 구조

by Lizardee 2023. 7. 27.
연산 코드와 오퍼랜드

▶ 명령어

  • 연산 코드(operation code): 연산자; 명령어가 수행할 연산
  • 오퍼랜드(operand): 피연산자; 연산에 사용할 데이터/연산에 사용할 데이터가 저장된 위치

--> 기계어, 어셈블리어 또한 명령어이기 때문에 연산 코드(operation code)와 오퍼랜드(operand)로 구성되어 있다.

 

오퍼랜드(operand)
  • 오퍼랜드 필드에는 연산에 사용할 데이터를 직접 명시하기보다는 많은 경우 데이터가 저장된 위치를 명시한다.

 

연산 코드(operation code)

▶ 데이터 전송

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

▶ 산술/논리 연산

  • ADD/SUBTRACT/MULTIPLY/DIVIDE: 덧셈/뺄셈/곱셈/나눗셈을 수행하라.
  • INCREMENT/DECREMENT: 오퍼랜드에 1을 더하라/오퍼랜드에 1을 빼라.
  • AND/OR/NOT: AND/OR/NOT 연산을 수행하라.
  • COMPARE: 두 개의 숫자 또는 TRUE/FALSE 값을 비교하라.

▶ 제어 흐름 변경

  • JUMP: 특정 주소로 실행 순서를 옮겨라.
  • CONDITIONAL JUMP: 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라.
  • HALT: 프로그램의 실행을 멈춰라.
  • CALL: 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라.
  • RETURN: CALL을 호출할 때 저장했던 주소로 돌아가라.

▶ 입출력 제어

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

 

주소 지정 방식(addressing mode)

: 연산 코드 + 오퍼랜드

  • 즉시 주소 지정 방식(immediate addressing mode): 연산 코드 + 연산에 사용할 데이터
  • 직접 주소 지정 방식(direct addressing mode): 연산 코드 + 유효 주소(메모리 주소)
  • 간접 주소 지정 방식(indirect addressing mode): 연산 코드 + 유효 주소의 주소
  • 레지스터 주소 지정 방식(register addressing mode): 연산 코드 + 유효 주소(레지스터 이름)
  • 레지스터 간접 주소 지정 방식(register indirect addressing mode): 연산 코드 + 유효 주소를 저장한 레지스터

 


스택과 큐

▶ 스택(stack): 한쪽 끝이 막혀 있는 통과 같은 저장 공간

  • LIFO(Last In First Out)
  • PUSH: 스택에 새로운 데이터를 저장하는 명령어
  • POP: 스택에 저장된 데이터를 꺼내는 명령어

큐(queue): 양쪽이 뚫려 있는 통과 같은 저장 공간

  • FIFO(First In First Out)