*해당 글은 '혼자 공부하는 컴퓨터구조 + 운영체제(강민철 지음)'을 참고하여 작성되었습니다.
*구체적인 예시와 함께 더 자세히 공부하고 싶으신 분들은 해당 책을 읽어보시기를 추천드립니다.
지난 시간에 명령어의 구조와 연산 코드에 대해 간단히 배웠습니다.
명령어는 연산 코드와 오퍼랜드로 이루어져있다고 했었죠?
이번 시간에는 오퍼랜드에 대해 알아볼 것입니다!
오퍼랜드는 연산에 사용될 데이터나 데이터의 주소를 의미한다고 했었습니다.
하지만 많은 경우에, 메모리나 레지스터의 주소를 담는 경우가 많습니다.
오퍼랜드 필드에 실제 데이터를 담기에는 명령어의 길이가 부족하기 때문입니다.
예를 들어, 하나의 명령어가 n비트로 구성되어 있고, 그중 연산 코드 필드가 m비트라고 해봅시다.
이 경우에는 전체 오퍼랜드 필드가 (n-m)비트일 것입니다.
오퍼랜드가 2개 이상이라면, 각 오퍼랜드 필드는 그만큼 더 쪼개져야겠죠?
만약 오퍼랜드가 2개라면, (n-m)비트를 둘이서 나눠써야 하니까요!
이렇게 되면, 오퍼랜드 필드 하나에서 표현할 수 있는 정보의 가짓수는 매우 적어집니다.
하지만 이 오퍼랜드 필드에 데이터 자체 대신 해당 데이터가 있는 주소를 적는다면 어떨까요?
표현할 수 있는 데이터의 크기는 오퍼랜드 필드 크기의 영향을 받지 않게 됩니다!
해당 주소에 저장할 수 있는 크기만큼 표현할 수 있는 데이터의 크기가 커지는 것이죠!
예를 들어보겠습니다.
명령어의 길이가 16비트, 연산 코드 필드는 4비트, 3-주소 명령어라고 가정하겠습니다.
이 경우, 전체 오퍼랜드 필드는 12비트일 것입니다. (16 - 4 = 12)
3-주소 명령어, 즉 오퍼랜드 3개이므로 한 오퍼랜드당 4비트씩 쓴다고 하겠습니다.
만약 각 오퍼랜드 필드에 실제 데이터를 저장하는 식으로 하면, 표현할 수 있는 정보의 가짓수는 16개일 것입니다.
(n비트로 표현할 수 있는 정보의 가짓수는 2의 n승 개이기 때문. 2의 4승은 16이다.)
하지만 각 오퍼랜드 필드에 실제 데이터가 아닌 데이터가 있는 주소를 적으면 어떻게 될까요?
메모리 한 주소에 8비트를 저장할 수 있으면, 2의 8승인 256개의 정보를 표현할 수 있을 것입니다.
메모리 한 주소에 16비트를 저장할 수 있으면, 2의 16승인 65,536개의 정보를 표현할 수 있을 것입니다.
메모리 주소가 아닌 레지스터의 경우에도, 레지스터 하나가 저장할 수 있는 크기에 따라 더 많은 정보를 표현할 수 있습니다.
여기서 연산 코드에 사용할 데이터가 저장된 위치를 유효 주소(Effective Address)라고 합니다.
메모리나 레지스터의 주소를 가리키겠죠?
오퍼랜드 필드가 데이터가 저장된 위치를 명시할 때, 연산에 사용할 데이터의 위치를 찾는 방법들이 있습니다.
이것을 주소 지정 방식이라 부릅니다.
다음 시간에는 이 주소 지정 방식에 대해 알아보겠습니다!
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조][기초] CPU - ALU (산술/논리 연산 장치) (1) | 2025.03.13 |
---|---|
[컴퓨터구조][기초] 명령어의 구조 - 주소 지정 방식 (1) | 2025.03.12 |
[컴퓨터구조][기초] 명령어의 구조 - 연산 코드 (3) | 2025.03.11 |
[컴퓨터구조][기초] 목적 파일, 실행 파일 (0) | 2025.03.10 |
[컴퓨터 구조][기초] 컴파일 언어, 인터프리터 언어 (1) | 2025.03.09 |