CS

[CS] 명령어 구조 알아보기

chandlerxx 2024. 4. 12. 16:58

명령어 구조

  • `연산코드` : 연산자 (명령어가 수행해야할 연산)
  • `오퍼랜드` : 피연산자 (연산에 사용될 데이터 또는 데이터가 저장된 메모리 주소값) 
연산코드
(operation code)
오퍼랜드
(operand)
더하기 숫자 120 숫자 100
저장하기 숫자 20 메모리주소 xx

 

연산코드 

CPU마다 연산코드가 다른데, 대부분의 CPU가 공통적으로 처리하는 네가지 연산은 아래와 같습니다.

  • 산술/논리 연산 : ADD, SUBSTACT, DIVIDE, OR, AND, NOT, COMPARE(true or false)
  • 제어 흐름 변경 : JUMP, CALL, RETURN
  • 데이터 전송 : MOVE, STORE, PUSH, POP, LOAD(FETCH)
  • 입출력 제어 : INPUT(READ), OUTPUT(WRITE), START IO, TEST IO(상태 확인) 

 

오퍼랜드

  • 보통 데이터를 직접 명시하기보다는, 메모리 주소값을 할당
  • 그리하여 `주소필드` 라고 부르기도 함

(출처)

MOV DS, AX

해석 : 레지스터 피연산자 AX의 값은 레지스터 DS로 이동(MOV)된다.

 

왜 오퍼랜드에 메모리주소값을 할당하는지?

오퍼랜드는 데이터를 직접 명시하기 보다는 메모리주소를 할당한다고 했습니다. 그 이유는, 더 많은 데이터를 커버하기 위함입니다.

오퍼랜드의 비트가 8비트라고 가정할때, 256개(=2^8) 정보를 표현할 수 있습니다.

반면에 오퍼랜드에 16비트의 데이터를 담고 있는 메모리 주소값을 할당한다면, 더 많은 정보를 표현할 수 있는 거죠.

 

주소 지정 방식

연산에 사용할 데이터를 찾는 방식을 `주소 지정 방식`이라고 하고,

사용할 데이터가 저장된 위치를 `유효주소`라고 합니다.

 

주소 지정 방식의 대표적인 예를 아래처럼 구분할 수 있습니다.

 

  • 즉시 주소 지정 방식 : 사용할 데이터를 직접 명시
    - 장점 : 메모리주소 접근이 필요없어서 빠름
    - 단점 : 데이터 크기 제한

  • 직접 주소 지정 방식 : 메모리 주소값 지정
    - 장점 : 위 지정 방식보다는 데이터 크기가 크다
    - 단점 : 아무리 주소값을 할당하더라도 오퍼랜드 비트를 넘길 수 없다 (여전히 제한됨)

  • 간접 주소 지정 방식 : 유효주소의 주소값을 할당 (주소값의 주소값을 할당)
    - 장점 : 표현할 수 있는 주소값이 넓어짐
    - 단점 : 메모리 주소접근 두번 필요

 

  • 레지스터 주소 지정 방식 : (CPU내) 데이터를 담고 있는 레지스터를 직접 명시
    - 장점 : 메모리 주소값보다는 레지스터를 명시하는게 데이터 접근 측면에서 빠름
    - 단점 : 레지스터 크기가 제한될 가능성 있음
  • 레지스터 간접 주소 지정 방식 : (CPU내) 메모리 주소값을 담고 있는 레지스터를 직접 명시
    - 장점 : 메모리 주소값보다는 레지스터를 명시하는게 데이터 접근 측면에서 빠름
    - 단점 : 레지스터 크기가 제한될 가능성 있음

 

그림으로 이해하기

 

 

 

출처

교보문고 혼공컴운