얇고 넓은 CS지식 - CPU 명령어 형식

박종일·2023년 4월 24일
0

CPU 명령어 형식

  • 필드(field)
    • 특정 데이터를 저장하도록 지정해 놓은 영역
  • 연산 코드(OP code)
    • 연산의 동작을 지정 ex. LOAD, ADD
  • 오퍼랜드(Operand)
    • 연산을 수행하는데 필요한 데이터 수치, 레지스터 번호,주소
    • 한 명령어 형식 안에는 여러 개의 오퍼랜드 필드가 올 수 있음
  • 다음 명령어 주소
    • 현재의 명령어 실행이 완료된 후 다음 명령어를 인출할 위치
      -실행 순서를 변경하는 경우에는 필요하며, 순차적으로 다음 명령어가 실행되는 경우에는 필요하지 않음

명령어 형식의 설계

  • 연산 코드 필드의 길이

    • 연산의 개수를 결정
    • 연산 코드가 n비트이면 최대 2^n가지의 연산 종류 지정할 수 있음
    • 명령어의 길이가 고정된 상태에서 어느 한 필드의 비트 수를 증가시키면 다른 필드의 비트 수는 감소
  • 오퍼랜드 필드의 길이

    • 오퍼랜드의 범위 결정
    • 오퍼랜드 n비트이면 최대 2^n개의 주소를 직접 지정할 수 있음
    • 데이터, 기억장치의 주소, 레지스터 번호에 따라 필요한 비트 수가 달라짐

1-주소 명령어

  • 오퍼랜드를 한 개만 포함하는 명령어. 다른 한 오퍼랜드는 묵시적으로 누산기가 됨
  • 예 ADD X ; AC <- AC + M[X]
    - x:데이터가 저장되어 있는 기억장치의 주소
    - 기억 장치 x번지의 내용과 AC의 내용을 더하고, 그 결과를 다시 AC에 저장하라
    - 명렁어 코드는 주소 x만 포함하면 되므로, 오퍼랜드 필드의 모든 비트들이 주소 지정에 사용될 수 있음
    - 길이가 16비트인 1-주소 명령어 형식(연산코드 5비트로 가정)

2-주소 명렁어
두 개의 오퍼랜드를 포함하는 명령어

  • ADD R1,R2 ; R1 <- R1 + R2
    • 두 레지스터의 내용을 더하고, 결과값을 레지스터 R1에 저장하라
    • 오퍼랜드 필드가 두 개의 레지스터 번호들만 포함하면 됨
    • 입력 데이터가 저장된 레지스터들 중 하나에 연산의 결과값을 저장한다면, 명령어에는 두개의 오퍼랜드 필드만 있으면 됨
    • 결과값이 저장되는 레지스터의 원래 내용은 지워짐
  • ADD R1,X ; R1 <- R1 + M[X]
    • 오퍼랜드 중 하나는 레지스터에 저장, 다른 하나는 기억장치로부터 인출하여 덧셈 수행
    • 명령어 코드 내에 레지스터 번호와 기억장치주소가 모두 포함되어야 하므로 주소 지정을 할 수 있는 기억장치 영역이 제한
  • MOV R1,R2 ; R1 <- R2
    • 레지스터 R2의 내용을 레지스터 R1으로 이동, 이 경우 R1의 원래 내용은 지워짐

3-주소 명령어

  • 세 개의 오퍼랜드들을 명령어 내에 포함

    • ADD R1,R2,R3 ; R1 <- R2 + R3

profile
존경하는 인물: 스토브리그 백승수 단장(남궁민)

0개의 댓글