명령어
명령어
명령어의 구조
연산 코드
- 명령어에서 수행할 연산를 나타냄
- 연산 코드의 종류와 생김새는 CPU 마다 다름
연산 코드 종류
CPU 마다 연산 코드의 종류와 생김새가 다르기 때문에, 연산 코드 자체보단 연산의 종류가 중요
1. 데이터 전송
- MOVE - 데이터를 옮겨라
- STORE - 메모리에 저장하라
- LOAD(FETCH) - 메모리에서 CPU로 데이터를 가져와라
- PUSH - 스택에 데이터를 저장하라
- POP - 스택의 최상단 데이터를 가져와라
2. 산술/논리 연산
- ADD / SUBTRACT / MULTIPLY / DIVIDE - 덧셈 / 뺄셈 / 곱셈/ 나눗셈을 수행하라
- INCREAMENT / DECREMENT - 오퍼랜드에 1을 더하라 / 빼라
- AND / OR / NOT - AND / OR / NOT 연산을 수행하라
- COMPARE - 두 숫자나 TRUE / FALSE 값을 비교하라
3. 제어 흐름 변경
- JUMP - 특정 주소로 실행 순서를 옮겨라(실행하라)
- CONDITIONAL JUMP - 특정 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라(실행하라)
- HALT - 프로그램의 실행을 멈춰라
- CALL - 함수 실행 연산, 리턴 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라(실행하라)
- RETURN - CALL을 호출할 때 저장했던 주소로 돌아가라
4. 입출력 제어
- READ(INPUT) - 특정 입출력 장치로부터 데이터를 읽어라
- WRITE(OUTPUT) - 특정 입출력 장치로 데이터를 써라
- START IO - 입출력 장치를 시작하라
- TEST IO - 입출력 장치의 상태를 확인하라
오퍼랜드
- 연산에 사용될 데이터나 유효 주소를 나타냄
※ 유효 주소(effective address) - 연산에 사용될 데이터가 저장된 위치
※ 오퍼랜드에는 대부분 유효 주소가 저장되기 때문에, 주소 필드라고도 불린다. - 명령어에는 오퍼랜드가 0 ~ 3개가 있을 수 있고, 오퍼랜드의 개수에 따라
n-주소 명령어
로 불린다.
명령어 주소 지정 방식(addressing modes)
- 유효 주소를 찾는 방법
1. 즉시 주소 지정 방식(immediate addressing mode)
- 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
- 연산에 사용할 수 있는 데이터의 크기가 작지만, 연산 속도 빠름
2. 직접 주소 지정 방식(direct addressing mode)
- 메모리에 저장된 데이터의 유효 주소를 오퍼랜드 필드에 직접 명시
- 유효 주소를 표현할 수 있는 크기 제한이 있음
3. 간접 주소 지정 방식(indirect addressing mode)
- 메모리에 저장된 데이터의 유효 주소의 주소를 오퍼랜드 필드에 명시
- 유효 주소 표현 크기 제한이 없지만, 연산 속도 느림
4. 레지스터 주소 지정 방식(register addressing mode)
- 레지스터에 저장된 데이터의 유효 주소를 오퍼랜드 필드에 명시
- 메모리에 접근하는 속도보다 레지스터에 접근하는 속도가 더 빠름
5. 레지스터 간접 주소 지정 방식(register indirect addressing mode)
- 메모리에 저장된 데이터의 유효 주소를 레지스터에 저장하고, 그 레지스터의 주소를 오퍼랜드 필드에 명시
출처
- 강민철. 혼자 공부하는 컴퓨터 구조 + 운영체제: 한빛미디어, 2022.
This post is licensed under CC BY 4.0 by the author.