[운영체제] 주소지정방식의 의미 및 종류
주소지정방식이란
프로그램이 수행되는 동안 사용될 데이터의 위치를 지정하는 방법입니다.
주소 지정방식의 중요성
효율적인 주소지정방식은 데이터와 명령어에 보다 빠르게 접근할 수 있고, 메모리를 효율적으로 관리하여 하드웨어를 제어하는 데 중요한 역할을 합니다.
절대주소와 상대주소
절대주소(Absolute Address)
메모리에서 고유하게 식별되는 위치를 나타내는 실제(유효)주소입니다.
기억장치의 맨 처음부터 1 Byte마다 0, 1, 2, 3, ... 의 순서로 16진수의 번호가 차례대로 지정됩니다.
상대주소(Relative Address)
기준주소를 기준으로 하여 상대적으로 이동한 거리(Offset)로 표현하는 주소 ( 절대주소 = 기준주소 + Offset )
상대주소는 절대주소로 변환해야만 실제 데이터에 접근할 수 있음
주소 지정 방식 종류
묵시적 주소지정방식(Implied Mode)
주소를 지정하는 필드가 없는 경우에 사용되며, Stack의 Top 포인터가 가리키는 주소부(Operand)를 암시하여 이용합니다.
주로 레지스터 간의 연산이나 특정 레지스터의 값을 조작하는 명령어에서 사용합니다.
특징
주소를 명시적으로 지정할 필요가 없기 때문에 명령어가 간소화되고 프로그램이 더 짧아집니다.
주소를 계산하고 지정하는 데 필요한 클럭 사이클이 없기 때문에 실행속도가 향상됩니다.
즉시적 주소지정방식(Immediate Mode)
명령어에서 상수나 데이터 값을 지정하여 해당값을 명령어 실행에 사용하는 주소지정 방식입니다.
특징
명령어에 직접 값이 지정되므로 값이 고정되어 있습니다.
별도의 기억장소를 액세스 하지 않고 CPU에서 곧바로 자료를 이용하여 실행 속도가 빠릅니다.
명령어의 길이에 영향을 받으므로 표현할 수 있는 데이터 값의 범위가 제한적입니다.
직접 주소지정방식(Direct Mode)
명령어에서 사용할 데이터의 주소부(Operand)를 명시적으로 지정하는 방식입니다.
특징
명령어에 표현된 주소를 이용하여 실제 데이터가 저장된 기억장소에 직접 사상시킬 수 있습니다.
기억 용량이 2^n개의 Word인 메모리 시스템에서 주소를 표현하려면 n Bit의 Operand부가 필요합니다.
간접 주소지정방식(Indirect Mode)
명령어에서 직접적인 주소가 아닌 주소부(Operand)가 저장하고 있는 위치 값을 참조하여 데이터에 접근하는 방식입니다.
특징
주소가 포인터를 통해 동적으로 변경될 수 있어 유연성이 있습니다.명령어의 길이가 짧고, 제한되어 있어도 긴 주소에 접근 가능합니다.명령어에 실제 데이터가 저장된 주소를 가진 위치를 표현함으로써, 주 기억장치를 두 번 이상 접근하여 데이터가 있는 기억 장소에 도달합니다.
레지스터 주소 지정 방식 (Register Mode)
명령어에서 명시적으로 레지스터를 지정하여 해당 레지스터에 저장된 데이터를 사용하는 방식입니다.
특징
레지스터는 CPU 내부에 위치하고 있어 빠른 데이터 접근이 가능하며, 레지스터 간의 연산은 고속으로 수행됩니다.
임시적인 데이터를 저장하거나 연산 중간 결과를 보관하는 데 사용됩니다.
인덱스 주소 지정 방식 (Index Mode)
명령어에서 기본 주소에 인덱스 값을 더하여 최종 주소를 계산하는 방식입니다.
특징
명령어에서 주소를 동적으로 계산하여 유연하게 데이터에 접근 할 수 있습니다.
배열의 특정 인덱스에 위치한 데이터에 효율적으로 접근할 때 주로 사용됩니다.
주소를 계산하는 과정에서 포인터를 사용하며, 유사한 동작을 수행합니다.
베이스 레지스터 주소 지정 방식 (Base Register Mode)
명령어에서 베이스 레지스터가 가리키는 기본 주소에 오프셋 값을 더하여 최종 주소를 계산하는 방식입니다.
특징
베이스 레지스터: 명령이 시작되는 첫번째 번지를 기억하고 있는 레지스터
명령어에서 상대 주소를 사용하여 베이스 레지스터의 위치에 따라 동적으로 데이터에 접근합니다.
상대적인 주소 계산으로 프로그램의 유연성을 높일 수 있습니다.
상대 주소 지정 방식 (Relative Mode)
명령어에서 현재 위치를 기준으로 프로그램 카운터(Program Counter)를 이용하여 주소에 접근하는 방식입니다. 명령어의 주소 부분과 프로그램 카운터를 더하여 최종 주소를 계산합니다.
특징
프로그램 카운터(Program Counter) : 다음 명령어 위치를 가리키는 레지스터
명령어의 기억 장소를 기준으로 위치를 지정합니다.