컴퓨터 구조: 명령어의 구조와 주소 지정 방식
|
2 min read
CPU가 작업을 수행하기 위한 핵심 정보인 명령어의 구성 요소(연산 코드, 오퍼랜드)와 데이터를 찾는 다양한 주소 지정 방식을 정리합니다.
1. 명령어의 구조
명령어는 크게 두 가지 핵심 정보로 구성됩니다.
- 연산 코드 (Op-code): 수행할 동작 (예: ADD, MOVE, JUMP 등)
- 오퍼랜드 (Operand): 연산의 대상이 되는 데이터 또는 데이터가 저장된 위치 (피연산자)
"무엇을(오퍼랜드) 어떻게(연산 코드) 해라"라는 구조로 이해하면 쉽습니다.
🔹 주요 연산 코드 예시
- 산술/논리: ADD, SUB, AND, OR
- 제어 흐름: JUMP(이동), CALL(함수 호출), HALT(종료)
- 데이터 전송: MOVE(이동), STORE(저장), LOAD(불러오기)
2. 주소 지정 방식 (Addressing Modes)
오퍼랜드 필드에는 실제 데이터가 들어있기도 하지만, 메모리 용량의 한계 때문에 데이터가 저장된 '주소'나 '레지스터 이름'이 들어있는 경우가 많습니다. 이때 유효 주소(실제 데이터 위치)를 찾는 방식을 주소 지정 방식이라고 합니다.
- 즉시 주소 지정 (Immediate): 오퍼랜드에 실제 데이터를 직접 넣습니다. 주소를 찾을 필요가 없어 가장 빠르지만 데이터 크기에 제한이 있습니다.
- 직접 주소 지정 (Direct): 오퍼랜드에 데이터의 실제 메모리 주소를 넣습니다.
- 간접 주소 지정 (Indirect): 오퍼랜드에 유효 주소의 '주소가 담긴 주소'를 넣습니다. 속도는 느리지만 더 넓은 범위의 주소를 표현할 수 있습니다.
- 레지스터 주소 지정 (Register): 메모리가 아닌 CPU 내부의 레지스터 번호를 넣습니다. 메모리 접근보다 훨씬 빠릅니다.
- 레지스터 간접 주소 지정 (Register Indirect): 유효 주소를 레지스터에 저장하고, 그 레지스터를 오퍼랜드에 명시합니다.