명령어의 구조

song·2023년 4월 3일
0

명령어는 연산 코드와 오퍼랜드로 구성

연산 코드

  • 명령어가 수행할 연산
  • 가장 기본적인 연산 코드 유형 4가지

    데이터 전송
    산술/논리 연산
    제어 흐름 변경
    입출력 제어

오퍼랜드

  • 연산에 사용할 데이터 or 연산에 사용할 데이터가 저장된 위치
  • 많은 경우 연산에 사용할 데이터가 저장된 위치, 즉 메모리 주소나 레지스터 이름이 담김

그래서 오퍼랜드 필드를 주소 필드라고 부르기도 함

  • 오퍼랜드는 명령어 안에 0개(0-주소 명령어), 1개(1-주소 명령어), 2개(2-주소 명령어), ... 등이 있을 수 있음

질문: 오퍼랜드 필드에 데이터가 아닌 메모리나 레지스터 주소를 저장하는 이유는?

이유: 명령어 길이 때문

그림에서 볼 수 있듯, 주소를 저장하면 하나의 메모리 주소에 저장할 수 있는 공간만큼 커진다.

주소 지정 방식

  • 유효 주소
    • 연산에 사용할 데이터가 저장된 위치

  • 명령어 주소 지정 방식
    • 연산에 사용할 데이터가 저장된 위치를 찾는 방법
    • 즉, 유효 주소를 찾는 방법
    • 다양한 명령어 주소 지정 방식들이 존재

다양한 주소 지정 방식들

  • 즉시 주소 지정 방식 (immediate addressing mode)
    • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
    • 가장 간단한 형태
    • 연산에 사용할 데이터 크기 작음 (직접 명시하기 때문)
    • 주소를 찾는 과정이 없어 빠름



  • 직접 주소 지정 방식 (direct addressing mode)
    • 오퍼랜드 필드에 유효 주소 직접적으로 명시
    • 여전히 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듦



  • 간접 주소 지정 방식 (indirect addressing mode)
    • 오퍼랜드 필드에 유효 주소의 주소를 명시
    • 속도가 느림 (주소를 찾기 위한 2번의 메모리 접근이 필요하기 때문)



  • 레지스터 주소 지정 방식 (register addressing mode)
    • 연산에 사용할 데이터가 저장된 레지스터 명시
    • 메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠름
      (즉, cpu에서 레지스터 접근이 더 빠름. cpu안에 레지스터가 있어서 당연한듯)



  • 레지스터 간접 주소 지정 방식 (register indirect addressing mode)
    • 연산에 사용할 데이터를 메모리에 저장
    • 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

<출처>
"혼자 공부하는 컴퓨터구조+운영체제".강민철.https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl (2023.04.03)


책과 강의를 통해 학습한 내용을 요약 정리했습니다.
profile
인간은 적응의 동물

0개의 댓글