CS/컴퓨터 구조
[컴퓨터 구조] 명령어의 구조
초오오이
2024. 11. 11. 21:07
1. 명령어의 구조
- 연산코드: 수행할 연산(이미지에서 붉은색 배경에 해당)
- 오퍼랜드: 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치(이미지에서 흰색 부분에 해당)
2. 오퍼랜드(Operand, 피연산자)
- 오퍼랜드는 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치가 저장된다.
- 오퍼랜드에 값이 담기는 공간을 오퍼랜드 필드라고 하며, 오퍼랜드 필드에는 연산에 사용될 데이터가 저장된 위치(메모리 주소, 레지스터 위치 등)가 주로 담기게 된다. 때문에 오퍼랜드 필드를 주소 필드라고 부르기도 한다.
- 오퍼랜드가 없는(0-주소 명령어) 경우도 있으며 오퍼랜드가 1개 이상인 경우도 있다.
3. 연산코드
- CPU 마다 각기 다른 연산코드를 가지고 있지만 대부분 아래 공통적인 연산코드를 가진다.
데이터 전송 | MOVE | 데이터를 옮겨라(보통 레지스터에서 다른 레지스터로 이동) |
STORE | 메모리에 저장하라 | |
LOAD(FETCH) | 메모리에서 CPU로 데이터를 가져와라 | |
PUSH | 스택에 데이터를 저장하라 | |
POP | 스택의 최상단 데이터를 가져와라 | |
산술/논리 연산 | ADD / SUBTRACT / MULTPLY / DIVIDE | 사칙연산 |
INCREMENT / DECREMENT | 오퍼랜드에 1 더하라/오퍼랜드에 1을 빼라 | |
AND / OR / NOT | AND, OR, NOT 연산을 수행하라 | |
COMPARE | 두개의 숫자 또는 true/false 값을 비교해라 | |
제어 흐름 변경 | JUMP | 특정 주소로 실행 순서를 옮겨라 |
CONDITIONAL JUMP | 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라 | |
HALT | 프로그램 실행을 멈춰라 | |
CALL | 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라 | |
RETURN | CALL을 호출할 때 저장했던 주소로 돌아가라 | |
입출력 제어 | READ (INPUT) | 특정 입출력 장치로부터 데이터를 읽어라 |
WRITE(OUTPUT) | 특정 입출력 장치로 데이터를 써라 | |
START IO | 입출력 장치를 시작하라 | |
TEST IO | 입출력 장치의 상태를 확인하라 |
본 내용은 아래 강의를 수강하고 작성한 포스팅입니다.