CS
[CS] 명령어 구조 알아보기
chandlerxx
2024. 4. 12. 16:58
명령어 구조
- `연산코드` : 연산자 (명령어가 수행해야할 연산)
- `오퍼랜드` : 피연산자 (연산에 사용될 데이터 또는 데이터가 저장된 메모리 주소값)
연산코드 (operation code) |
오퍼랜드 (operand) |
|
더하기 | 숫자 120 | 숫자 100 |
저장하기 | 숫자 20 | 메모리주소 xx |
연산코드
CPU마다 연산코드가 다른데, 대부분의 CPU가 공통적으로 처리하는 네가지 연산은 아래와 같습니다.
- 산술/논리 연산 : ADD, SUBSTACT, DIVIDE, OR, AND, NOT, COMPARE(true or false)
- 제어 흐름 변경 : JUMP, CALL, RETURN
- 데이터 전송 : MOVE, STORE, PUSH, POP, LOAD(FETCH)
- 입출력 제어 : INPUT(READ), OUTPUT(WRITE), START IO, TEST IO(상태 확인)
오퍼랜드
- 보통 데이터를 직접 명시하기보다는, 메모리 주소값을 할당함
- 그리하여 `주소필드` 라고 부르기도 함
(출처)
MOV DS, AX
해석 : 레지스터 피연산자 AX의 값은 레지스터 DS로 이동(MOV)된다.
왜 오퍼랜드에 메모리주소값을 할당하는지?
오퍼랜드는 데이터를 직접 명시하기 보다는 메모리주소를 할당한다고 했습니다. 그 이유는, 더 많은 데이터를 커버하기 위함입니다.
오퍼랜드의 비트가 8비트라고 가정할때, 256개(=2^8) 정보를 표현할 수 있습니다.
반면에 오퍼랜드에 16비트의 데이터를 담고 있는 메모리 주소값을 할당한다면, 더 많은 정보를 표현할 수 있는 거죠.
주소 지정 방식
연산에 사용할 데이터를 찾는 방식을 `주소 지정 방식`이라고 하고,
사용할 데이터가 저장된 위치를 `유효주소`라고 합니다.
주소 지정 방식의 대표적인 예를 아래처럼 구분할 수 있습니다.
- 즉시 주소 지정 방식 : 사용할 데이터를 직접 명시
- 장점 : 메모리주소 접근이 필요없어서 빠름
- 단점 : 데이터 크기 제한 - 직접 주소 지정 방식 : 메모리 주소값 지정
- 장점 : 위 지정 방식보다는 데이터 크기가 크다
- 단점 : 아무리 주소값을 할당하더라도 오퍼랜드 비트를 넘길 수 없다 (여전히 제한됨) - 간접 주소 지정 방식 : 유효주소의 주소값을 할당 (주소값의 주소값을 할당)
- 장점 : 표현할 수 있는 주소값이 넓어짐
- 단점 : 메모리 주소접근 두번 필요
- 레지스터 주소 지정 방식 : (CPU내) 데이터를 담고 있는 레지스터를 직접 명시
- 장점 : 메모리 주소값보다는 레지스터를 명시하는게 데이터 접근 측면에서 빠름
- 단점 : 레지스터 크기가 제한될 가능성 있음
- 레지스터 간접 주소 지정 방식 : (CPU내) 메모리 주소값을 담고 있는 레지스터를 직접 명시
- 장점 : 메모리 주소값보다는 레지스터를 명시하는게 데이터 접근 측면에서 빠름
- 단점 : 레지스터 크기가 제한될 가능성 있음
그림으로 이해하기
출처