[CS : 컴퓨터 구조] 03-2 명령어의 구조
Computer Science/컴퓨터 구조

[CS : 컴퓨터 구조] 03-2 명령어의 구조

T) 명령어의 구조

T1) 명령어란?

  • ' 무엇을 대상으로 무엇을 수행하라'라는 것
  • ex) "철수야 미역국 좀 끓여라"
더해라 100과 120을
뺴라 메모리 32번지 안의 값과 메모리 33번지 안의 값을
저장해라 10을 메모리 128번지에
수행할 연산 연산에 사용될 데이터 혹은 주소필드( 연산에 사용될 데이터가 저장된 위치 )

 

T2) 명령어의 구성

저장해라 10을 메모리 128번지에
A) 연산코드 B) 오퍼랜드

B) 오퍼랜드

  • 오퍼랜드에는 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치(주소필드)가 들어있다.
  • 경우에 따라 없는 경우 여러개가 들어있는 경우가 있을 수 있다.

오퍼랜드 구성의 경우의 수

 

A) 연산코드 (연산코드의 종류와 생김새는 CPU마다 다르다)

종류 :  ① 데이터전송 ② 산술 / 논리 연산 ③ 제어 흐름 변경 ④ 입·출력 제어

 

A-1) 데이터 전송

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

A-2) 산술 / 논리연산

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

A-3) 제어흐름 변경

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

A-4) 입·출력 제어

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

 

T-2) 명령어 주소 지정 방식

명령어 구성

※ 명령어의 구조 중 오퍼랜드 필드에 연산에 사용될 데이터가 저장된 위치가 저장되는 이유는 명령어의 크기가 한정적이고 그로인해 오퍼랜드 필드의 크기도 줄어들고 그렇게 되면 자장할 수 있는 데이터의 크기가 작아지고 한정적이기 때문에 참조할 수 있는 주소값을 저장시킨다.

 

C-1) 유효주소(effective address)

  • 연산에 사용할 데이터가 저장된 위치

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

  • 연산에 사용할 데이터가 저장된 위치를 찾는 방법
  • 유효 주소를 찾는 방법
  • 다양한 명령어 주소 지정 방식들이 있다.

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

  • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
  • 가장 간단한 형태의 주소 지정 방식
  • 연산에 사용할 데이터의 크기가 작아질 수 있지만 속도가 빠르다.

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

C-4) 직접 주소 지정 방식(direct addressing mode) - 메모리

  • 오퍼랜드 필드에 유효주소 직접적으로 명시
  • 유효주소를 표현할 수 있는 크기가 연산코드만큼 줄어든다.

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

C-5) 간접 주소 지정 방식(indirect addressing mode) - 메모리

  • 오퍼랜드 필드에 유효주소의 주소를 명시
  • 앞선 주소 지정 방식들에 비해 속도가 느림

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

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

  • 연산에 사용할 데이터가 저장된 레지스터 명시
  • 메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠르다.

레지스터 주소 지정 방식의 명령어 구조

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

  • 연산에 사용할 데이터를 메모리에 저장
  • 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

레지스터 간접 주소 지정 방식의 명령어 구조

 

 

출처: 인프런-개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard