
명령어 형식(Instruction Format), CPU가 해석하고 실행할 수 있도록 명령어는 특정 구조로 구성됩니다. 일반적으로 명령어는 다음과 같은 기본 요소로 이루어집니다.
명령어 구성 요소
연산 코드(Op-code)
- 
연산 코드(Op-code)는 CPU가 수행해야 할 작업을 정의하는 필수적인 부분입니다. 
- 
각 명령어는 특정한 연산 코드와 함께 실행되며, CPU의 제어 장치가 이를 해석하여 연산을 수행합니다. 
- 
예제 - 
ADD: 덧셈 연산을 수행.
- 
SUB: 뺄셈 연산을 수행.
- 
MOV: 데이터를 특정 레지스터나 메모리 위치로 이동.
 
- 
- 
연산 코드의 길이는 CPU의 아키텍처에 따라 다를 수 있으며, RISC 프로세서는 고정된 길이를 가지는 반면, CISC 프로세서는 가변 길이를 가질 수 있습니다. 
오퍼랜드(Operand)
- 
오퍼랜드는 연산 코드가 작동할 데이터를 나타내는 부분입니다. 
- 
오퍼랜드는 값 자체(즉시 값)일 수도 있고, 특정 메모리 주소나 레지스터를 가리킬 수도 있습니다. 
- 
예제 - 
ADD R1, R2: R1과 R2 레지스터의 값을 더함.
- 
MOV R1, 10: 정수 10을 R1 레지스터에 저장.
- 
LOAD R1, [100]: 메모리 주소 100번지에 있는 값을 R1에 로드.
 
- 
- 
오퍼랜드는 CPU가 연산을 수행하는 데 필요한 데이터의 위치와 값을 결정하는 중요한 역할을 합니다. 
주소 모드(Addressing Mode)
- 
주소 모드는 CPU가 오퍼랜드의 위치를 찾는 방식을 정의합니다. 
- 
다양한 주소 모드는 연산의 유연성을 높이고, 명령어의 효율성을 최적화하는 데 도움을 줍니다. 
주소 모드의 종류
- 
즉시 주소 지정(Immediate Addressing): 오퍼랜드 값이 명령어 내부에 포함됨. - 
예: MOV R1, 5(R1 = 5)
 
- 
- 
직접 주소 지정(Direct Addressing): 오퍼랜드가 저장된 메모리 주소를 직접 지정. - 
예: LOAD R1, [100](메모리 주소 100번지 값을 R1에 로드)
 
- 
- 
간접 주소 지정(Indirect Addressing): 명령어가 지정한 주소에 실제 오퍼랜드 주소가 저장됨. - 
예: LOAD R1, @R2(R2에 저장된 주소에서 값을 가져옴)
 
- 
- 
레지스터 주소 지정(Register Addressing): 오퍼랜드가 레지스터에 위치함. - 
예: ADD R1, R2
 
- 
- 
베이스-인덱스 주소 지정(Base-Indexed Addressing): 기본 주소(Base)와 오프셋(Offset)을 조합하여 메모리 주소를 계산함. - 
예: LOAD R1, [R2 + 10]
 
- 
명령어 형식의 종류
명령어 형식은 CPU의 설계 방식과 성능에 따라 여러 형태로 구분됩니다.
3주소 형식(Three-Address Instruction Format)
- 
형식: OP A, B, C
- 
설명: 연산 결과를 세 번째 오퍼랜드에 저장하는 방식. 
- 
예시: ADD R1, R2, R3(R1 = R2 + R3)
- 
특징: 한 번의 연산으로 여러 작업을 처리할 수 있어 속도가 빠르지만, 명령어 크기가 커질 수 있음. 
2주소 형식(Two-Address Instruction Format)
- 
형식: OP A, B
- 
설명: 두 개의 오퍼랜드를 사용하며, 결과는 첫 번째 오퍼랜드에 저장됨. 
- 
예시: MOV R1, R2(R1 = R2)
- 
특징: 연산 후 하나의 오퍼랜드가 덮어쓰기 되므로 추가적인 저장이 필요할 수 있음. 
1주소 형식(One-Address Instruction Format)
- 
형식: OP A
- 
설명: 하나의 오퍼랜드와 누산기(Accumulator)를 사용하여 연산 수행. 
- 
예시: ADD X(ACC = ACC + X)
- 
특징: 연산 속도가 빠르지만, 누산기의 역할이 중요함. 
0주소 형식(Zero-Address Instruction Format)
- 
형식: 스택(Stack) 기반 연산 
- 
설명: 오퍼랜드를 명시하지 않고, 스택에 저장된 값을 이용하여 연산 수행. 
- 
예시: PUSH A,POP B
- 
특징: 메모리 사용이 효율적이며, 명령어 크기가 작아짐. 
정리
명령어 형식은 CPU의 성능과 메모리 사용 방식에 큰 영향을 미칩니다. 연산 코드, 오퍼랜드, 주소 모드를 이해하면 프로세서가 데이터를 어떻게 처리하는지 더 깊이 알 수 있습니다.
