명령어의 구조

.·2023년 12월 22일

computer-architecture

목록 보기
1/10

앞서 고급언어(e.g. python, java, c, ..) 로 만든 프로그램을 실행시킬려면 저급언어로 변환해서 실행시킨다.
저급언어는 명령어로 이루어져있다.
그럼 명령어 하나하나는 어떻게 생겼을까 ?

명령어 구조


명령어는 연산 코드와 오퍼랜드로 구성된다.

(e.g. assembly)

오퍼랜드 (operand) (주소 필드)

  • 연산 코드 (OP Code) 가 처리할 데이터가 저장되어 있는 레지스터나 메모리 워드주소, 또한 연산결과가 저장될 장소의 주소를 나타낸다.
    주소 필드의 크기가 n비트면 2의 n승의 메모리 용량을 사용할 수 있습니다.

Operand 의 개수는 0 or 1개 이상이 될 수 있다.

연산 코드 (OP Code)

수행할 연산자를 표시하며 Operation Code여서 OP Code라 부릅니다.
OP Code 는 크게 4 종류로 나눌수 있다.

  1. 데이터 전송
  2. 산술/논리 연산
  3. 제어 흐름 변경
  4. 입출력 제어

1. 데이터 전송 연산 코드의 종류

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

2. 산술/논리 연산 코드의 종류

  • ADD / SUBTRACT / MULTIPLY / DIVIDE
  • INCREMENT / DECREMENT
  • AND / OR / NO: AND / OR / NOT
  • COMPARE : 두 개의 숫자 또는 TRUE / FALSE 값을 비교하라

3. 제어 흐름 변경 연산 코드의 종류

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

4. 입출력 제어 연산 코드의 종류

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

명령어 주소 지정 방식

0-주소 명령어 형식

  - 스택(Stack) 구조 컴퓨터에서 사용되는 명령어 형식입니다.
  - 입력 자료들의 출처와 연산 결과를 기억시킬 장소가 고정되어 있습니다.
  - 명령어 내에서 자료의 주소를 지정할 필요가 없는 명령어 형식입니다.
  - TOS는 스택의 최상단을 의미합니다.

1-주소 명령어 형식

 - 단일 누산기 구조의 컴퓨터에서 사용됩니다.
 - 명령어의 수행은 누산기(AC) 레지스터에서 이루어집니다. 
 - 하나의 주소부를 가지며, 연산에 사용되는 피연산자는 명령어에 나타난 주소부에 의하여 
얻어지는 피연산자와 누산기에 기억되어 있는 피연산자입니다.
 - 연산 결과도 누산기에 저장되므로 
   명령어 실행 이전에 기억되어 있던 데이터는 명령어 실행 후에 잃어버립니다.

2-주소 명령어 형식

 - 범용 레지스터 구조의 컴퓨터에서 사용되며, 가장 많이 사용하는 형식입니다.
 - 각 주소부는 레지스터나 주기억 장치의 주소를 지정합니다.
 - 연산 후 입력 자료의 보존이 필요 없으면 
   연산 결과를 두 개의 입력 자료가 기억되어 있던 곳들 중 한 레지스터에 기억시키는 방식입니다.

3-주소 명령어 형식

 - 범용 레지스터 구조의 컴퓨터에서 사용되며, 세 개의 주소를 지정합니다.
 - 각 주소부는 레지스터나 주기억 장치의 주소를 지정합니다.
 - 프로그램의 길이가 짧고 연산 후에 입력 자료가 레지스터에 보존되는 장점이 있습니다.
 - 하나의 명령을 수행하기 위해서는 자주 기억 장치에 접근해야 하므로
   수행 시간이 길어져 특수 목적의 기계 외에는 사용을 하지 않습니다.

Reference

-https://velog.io/@hyunji015/컴퓨터-구조-명령어의-구조#6-묵시적-주소지정-방식-스택-주소-지정방식

profile
.

0개의 댓글