연산 코드와 오퍼랜드
▶ 명령어
- 연산 코드(operation code): 연산자; 명령어가 수행할 연산
- 오퍼랜드(operand): 피연산자; 연산에 사용할 데이터/연산에 사용할 데이터가 저장된 위치
--> 기계어, 어셈블리어 또한 명령어이기 때문에 연산 코드(operation code)와 오퍼랜드(operand)로 구성되어 있다.
오퍼랜드(operand)
- 오퍼랜드 필드에는 연산에 사용할 데이터를 직접 명시하기보다는 많은 경우 데이터가 저장된 위치를 명시한다.
연산 코드(operation code)
▶ 데이터 전송
- MOVE: 데이터를 옮겨라.
- STORE: 메모리에 저장하라.
- LOAD(FETCH): 메모리에서 CPU로 데이터를 가져와라.
- PUSH: 스택에 데이터를 저장하라.
- POP: 스택의 최상단 데이터를 가져와라.
▶ 산술/논리 연산
- ADD/SUBTRACT/MULTIPLY/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: 입출력 장치의 상태를 확인하라.
주소 지정 방식(addressing mode)
: 연산 코드 + 오퍼랜드
- 즉시 주소 지정 방식(immediate addressing mode): 연산 코드 + 연산에 사용할 데이터
- 직접 주소 지정 방식(direct addressing mode): 연산 코드 + 유효 주소(메모리 주소)
- 간접 주소 지정 방식(indirect addressing mode): 연산 코드 + 유효 주소의 주소
- 레지스터 주소 지정 방식(register addressing mode): 연산 코드 + 유효 주소(레지스터 이름)
- 레지스터 간접 주소 지정 방식(register indirect addressing mode): 연산 코드 + 유효 주소를 저장한 레지스터
스택과 큐
▶ 스택(stack): 한쪽 끝이 막혀 있는 통과 같은 저장 공간
- LIFO(Last In First Out)
- PUSH: 스택에 새로운 데이터를 저장하는 명령어
- POP: 스택에 저장된 데이터를 꺼내는 명령어
▶ 큐(queue): 양쪽이 뚫려 있는 통과 같은 저장 공간
- FIFO(First In First Out)
'컴퓨터구조' 카테고리의 다른 글
[혼자 공부하는 컴퓨터구조] 04-2. 레지스터 (0) | 2023.07.27 |
---|---|
[혼자 공부하는 컴퓨터구조] 04-1. ALU와 제어장치 (0) | 2023.07.27 |
[혼자 공부하는 컴퓨터구조] 03-1. 소스 코드와 명령어 (0) | 2023.07.27 |
[혼자 공부하는 컴퓨터구조] 02. 데이터 (0) | 2023.07.27 |
[혼자 공부하는 컴퓨터구조] 01-2. 컴퓨터 구조의 큰 그림 (0) | 2023.07.27 |