CS공부/컴퓨터구조 / / 2025. 4. 21. 20:15

3-2. 명령어의 구조

명령어

명령어는 어떻게와 무엇을로 구성되어 있다.

이를 연산코드(연산자)와 오퍼랜드(피연산자)라고 한다.

ex) 더하라 / 10과 / 20을

이 명령어에서 어떻게 인 ‘더하라’는 연산코드라 하고 무엇을인 ‘10과’ ‘20을’은 오퍼랜드라고 한다.

ex) 어셈블리 언어로 본 연산코드와 오퍼랜드

push rbp
mov eax, 0
pop rbp
ret

이 어셈블리 언어로 보자면 빨간색은 연산코드, 흰색은 오퍼랜드 이다.

오퍼랜드

연산에 사용할 데이터 또는 데이터가 저장된 위치

오퍼랜드가 하나도 없는 명령어는 0-주소명령어, 하나인 명령어는 1-주소명령어,

두개는 2-주소명령어, 세개는 3-주소명령어라 한다.

연산코드

명령어가 수행할 연산

연산의 대표적인 종류 4가지

  1. 데이터 전송
    1. MOVE : 데이터를 옮겨라
    2. STORE : 메모리에 저장하라
    3. LOAD(FETCH) : 메모리에서 CPU로 데이터를 가져와라
    4. PUSH : 스택에 데이터를 저장하라
    5. POP : 스택의 최상단 데이터를 가져와라
  2. 산술/논리 연산
    1. ADD : 더하라
    2. SUB : 빼라
    3. MUL : 곱하라
    4. DIV : 나누어라
    5. AND : 논리곱 연산을 수행하라
    6. OR : 논리합 연산을 수행하라
    7. NOT : 보수를 구하라
  3. 제어 흐름 변경
    1. JUMP : 특정 주소로 실행 순서를 옮겨라
    2. BRANCH : 조건에 따라 실행 순서를 변경하라
    3. CALL : 함수를 호출하라
    4. RETURN : 함수에서 복귀하라
  4. 입출력 제어
    1. IN : 입력장치로부터 데이터를 읽어라
    2. OUT : 출력장치로 데이터를 보내라
    3. START IO : 입출력 작업을 시작하라
    4. TEST IO : 입출력 장치의 상태를 확인하라

주소지정방식

오퍼랜드 필드에 데이터가 저장된 위치를 명시 할 때 유효주소를 찾는 방법

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

  1. 즉시 주소 지정 방식
    1. 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
    2. 표현할 수 있는 데이터의 크기가 작아지지만 유효주소를 찾는 과정이 없어서 빠르다.
  2. 직접 주소 지정 방식
    1. 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
    2. 즉시보다는 데이터의 크기는 커졌지만 오퍼랜드 필드의 길이가 연산코드의 길이만큼 짧아져 표현할 수 있는 유효 주소에 제한이 생길 수 있다.
  3. 간접 주소 지정 방식
    1. 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식
    2. 데이터 사용에 유연성이 올라가지만 속도가 느려진다.
  4. 레지스터 주소 지정 방식
    1. 직접 주소 지정 방식과 유사하지만 CPU외부의 메모리에 접근 하는 것이 아닌 CPU 내부에 있는 레이즈터에 접근 하는 방식
    2. 표현할 수 있는 레지스터의 크기에 제한이 생길 수 있다.
  5. 레지스터 간접 주소 지정 방식
    1. 데이터를 메모리에 저장하고 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법
    2. 간접 주소 지정 방식과 비슷하지만 메모리 접근 횟수가 한 번으로 줄면서 더 빠르다.
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유