1. 명령어의 구조
1-1. 연산 코드 (연산자)
- 연산 코드 필드에 존재
- 명령어가 수행할 연산
- 크게 데이터 전송, 산술/논리 연산, 제어 흐름 변경, 입출력 제어 유형의 4가지로 나뉨
1-2. 오퍼랜드 (피연산자)
- 오퍼랜드 필드에 존재
- 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치
- 보통 연산에 사용할 메모리의 주소나 레지스터 이름이 담김
- 명령어의 길이를 줄이기 위해 주소나 레지스터를 저장함
- 따라서 주소 필드라고도 불림
- 명령어 안에 하나도 없을 수도 있고, 한개 이상이 담길 수도 있음
- 오퍼랜드의 수에 따라 0-주소 명령어, 1-주소 명령어 등으로 명명함.
mov ax, [operand1]
add ax, [operand2]
mov [result], ax
mov dx, result
pop rgb
ret
- mov, add, pop, ret은 opcode
- ax dx등은 operand
1-3. 주소 지정 방식
- 유효 주소
- 연산 코드에 사용할 데이터가 저장된 위치
- 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터를 찾는 방법
- 즉, 유효 주소를 찾는 방법
1-3-1. 즉시 주소 지정 방식
- 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
- 사용할 데이터를 레지스터나 메모리에서 찾을 필요가 없어 빠름
- 표현할 수 있는 오퍼랜드 필드의 길이가 연산 코드의 길이 만큼 짧아져 표현할 수 있는 데이터의 크기가 작아짐
1-3-2. 직접 주소 지정 방식
- 유효 주소를 직접적으로 명시하는 방식
- 즉지 주소 지정 방식보다 표현할 수 있는 데이터의 크기가 커짐
- 여전히 표현할 수 있는 유효 주소에 제한이 있음
1-3-3. 간접 주소 지정 방식
- 유효 주소의 주소를 오퍼랜드 필드에 명시
- 두 번의 메모리 접근을 가지기 앞의 방식들보다 때문에 느림
1-3-4. 레지스터 지정 방식
- 직접 주소 지정 방식과 비슷함 대신 레지스터를 오퍼랜드 필드에 직접 명시
- CPU 내부 저장소인 레지스터를 사용해서 속도가 빠름
- 표현할 수 있는 레지스터 크기에 제한이 생김
1-3-5. 레지스터 간접 주소 지정 방식
- 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법
- 레지스터에 접근하는 방식이기 때문에 간접 주소 지정 방식보다 빠름
1-3-6. 스택 주소 지정 방식
- 스택과 스택 포인터를 이용한 주소 지정 방식
- 스택 포인터를 통해 데이터가 스택의 어디까지 채워져 있는지 확인
- 스택 영역은 메모리 안의 주소 공간에 암묵적으로 합의된 곳에 존재.
1-3-6. 변위 주소 지정 방식
- 오퍼랜드 필드의 값 (변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 방식
1. 상대 주소 지정 방식
- 오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻음
- 실행하려는 명령어로 부터 프로그램 카운터의 값 만큼 떨어진 곳의 명령어를 실행
2. 베이스 레지스터 주소 지정 방식
- 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소 얻음
- 베이스 레지스터 : 기준 주소
- 오퍼랜드 : 기준 주소로부터 떨어진 거리
'CS > 컴퓨터 구조' 카테고리의 다른 글
명령어 병렬 처리 기법 [혼공컴구] (0) | 2023.11.22 |
---|---|
컴퓨터 구조 - 클럭, 코어, 스레드 [혼공컴구] (0) | 2023.11.17 |
컴퓨터 구조 - 명령어 사이클과 인터럽트 [혼공컴구] (0) | 2023.11.17 |
컴퓨터 구조 - CPU ( 코어 ) [혼공컴구] (0) | 2023.11.17 |
컴퓨터 구조 - 데이터 [혼공컴구] (0) | 2023.11.17 |