CPU 명령어 형식

- 필드(field)
- 연산 코드(OP code)
- 오퍼랜드(Operand)
- 연산을 수행하는데 필요한 데이터 수치, 레지스터 번호,주소
- 한 명령어 형식 안에는 여러 개의 오퍼랜드 필드가 올 수 있음
- 다음 명령어 주소
- 현재의 명령어 실행이 완료된 후 다음 명령어를 인출할 위치
-실행 순서를 변경하는 경우에는 필요하며, 순차적으로 다음 명령어가 실행되는 경우에는 필요하지 않음
명령어 형식의 설계
-
연산 코드 필드의 길이
- 연산의 개수를 결정
- 연산 코드가 n비트이면 최대 2^n가지의 연산 종류 지정할 수 있음
- 명령어의 길이가 고정된 상태에서 어느 한 필드의 비트 수를 증가시키면 다른 필드의 비트 수는 감소
-
오퍼랜드 필드의 길이
- 오퍼랜드의 범위 결정
- 오퍼랜드 n비트이면 최대 2^n개의 주소를 직접 지정할 수 있음
- 데이터, 기억장치의 주소, 레지스터 번호에 따라 필요한 비트 수가 달라짐

1-주소 명령어
- 오퍼랜드를 한 개만 포함하는 명령어. 다른 한 오퍼랜드는 묵시적으로 누산기가 됨
- 예 ADD X ; AC <- AC + M[X]
- x:데이터가 저장되어 있는 기억장치의 주소
- 기억 장치 x번지의 내용과 AC의 내용을 더하고, 그 결과를 다시 AC에 저장하라
- 명렁어 코드는 주소 x만 포함하면 되므로, 오퍼랜드 필드의 모든 비트들이 주소 지정에 사용될 수 있음
- 길이가 16비트인 1-주소 명령어 형식(연산코드 5비트로 가정)

2-주소 명렁어
두 개의 오퍼랜드를 포함하는 명령어
- ADD R1,R2 ; R1 <- R1 + R2
- 두 레지스터의 내용을 더하고, 결과값을 레지스터 R1에 저장하라
- 오퍼랜드 필드가 두 개의 레지스터 번호들만 포함하면 됨
- 입력 데이터가 저장된 레지스터들 중 하나에 연산의 결과값을 저장한다면, 명령어에는 두개의 오퍼랜드 필드만 있으면 됨
- 결과값이 저장되는 레지스터의 원래 내용은 지워짐
- ADD R1,X ; R1 <- R1 + M[X]
- 오퍼랜드 중 하나는 레지스터에 저장, 다른 하나는 기억장치로부터 인출하여 덧셈 수행
- 명령어 코드 내에 레지스터 번호와 기억장치주소가 모두 포함되어야 하므로 주소 지정을 할 수 있는 기억장치 영역이 제한
- MOV R1,R2 ; R1 <- R2
- 레지스터 R2의 내용을 레지스터 R1으로 이동, 이 경우 R1의 원래 내용은 지워짐
3-주소 명령어
-
세 개의 오퍼랜드들을 명령어 내에 포함
- ADD R1,R2,R3 ; R1 <- R2 + R3
