명령어의 구조
1. 연산코드
연산코드유형 4가지(※ CPU마다 다름)
데이터 전송
산술/논리 연산
2. 오퍼랜드
오퍼랜드가 담기는 영역을 오퍼랜드 필드라고 한다.
오퍼래느 필드에는 문자/숫자 등을 나타내는 데이터, 메모리나 레지스터주소가 올 수 있다.
다만 문자/숫자와 같이 연산에 사용할 데이터를 직접 명시하기보다는 연산에 사용할 데이터가 저장된 위치, 즉 메모리 주소나 레지스터 이름이 주로 담긴다. 이같은 이유로 주소필드라고 불리기도 한다.
0-주소 명령어 : 오퍼랜드가 하나도 없는 명령어
1-주소 명령어 : 오퍼랜드가 1개인 명령어
2-주소 명령어 : ~2개~
3-주소 명령어 : ~3개~
연산코드 | 오퍼랜드 |
---|
1-주소 명령어
연산코드 | 오퍼랜드 | 오퍼랜드 |
---|
2-주소 명령어
연산코드 | 오퍼랜드 | 오퍼랜드 | 오퍼랜드 |
---|
3-주소 명령어
주소 지정 방식
: 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치를 찾는 방법(= 유효 주소를 찾는 방법)
※ 오퍼랜드 필드에 메모리나 레지스터의 주소를 담는 이유?
→ 명령어의 길이로 인해 오퍼랜드 필드로 표현할 수 있는 정보의 가짓수에 제한이 생기기 때문
명령어가 N비트, 연산 코드 필드가 n비트인 경우
오퍼랜드 필드가 가장 많은 공간을 할당할 수 있는 1-주소 명령어라 할지라도
오퍼랜드 필드의 길이는 연산 코드만큼의 길이를 뺀 N-n비트가 된다.
ex) 명령어 크기 = 16비트/ 연산코드 필드 = 4비트
→ 오퍼랜드 필드 크기 = 16 - 4 = 12비트
→ 표현가능한 정보의 가짓수 = 2^12개
하지만 오퍼랜드 필드에 메모리 주소를 담는다면 표현가능한 데이터 크기는
하나의 메모리 주소에 저장할 수 있는 공간만큼 커진다.
연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식.
오퍼랜드 필드에 유효주소를 직접 명시하는 방식.
※ 유효주소 : 연산에 사용할 데이터가 저장된 위치
오퍼랜드 필드에 유효주소의 주소를 명시하는 방식.
연산에 사용할 데이터가 메모리가 아닌 레지스터에 저장된 경우
연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식.(≒직접 주소 지정 방식)
연산에 사용할 데이터를 메모리에 저장하고, 그 주소(유효주소)를 레지스터에 저장하고, 그 레지스터를 다시 오퍼랜드 필드에 명시하는 방식.(≒간접 주소 지정 방식)