CS/컴퓨터 구조

[컴퓨터 구조] MIPS instructions

윤곰이 2024. 6. 15. 22:26
학교에서 들은 컴퓨터 구조 강의 내용을 복습하면서 작성한 글입니다.
April 3, 2024 8:04 PM

 

Instruction Encoding Example

  • assembly instructions: addi $t0, $t1, 0x123
  • machine code
    0010 00 01 001 0 1000 0000 0001 0010 0011
    opcode
    (명령어 종류)
    reg 9 reg 8 immediate
    addi $t1 $t0 0x0123
    → 0x21280123
  • 명령어들은 machine code라고 불리는 binary로 encoded 된다
  • MIPS instructions: 32bit
  • Register number
    • $t0 - $t7: 8-15
    • $t8 - $t9: 24-25
    • $s0 - $s7: 16-23

MIPS R-format Instructions: Register

Bit 31

op rs rt rd shamt funct
6 bits 5 bits 5bits 5bits 5bits 6bits

 

op 와 funct 을 조합해서 명령해서 명령어 구분!!!

ex) add $t0, $s1, $s2 (rd, rs, rt)

opcode $s1 (rs) $s2 (rt) $t0 (rd) 0 add
0 17 18 8 0 32
000000 10001 10010 01000 00000 100000

000000100011001001000000001000002 = 0x02324020

MIPS I-format Instructions: Immediate

bit 31

op rs rt constant or address
6 bits 5 bits 5 bits 16bits
  • rs: lw에서는 source, sw에서는 destination
  • rt: lw에서는 destination, sw에서는 source
  • constant: $-2^{15}$ to $+2^{15}-1$
  • address: offset added to base address in rs

  • bit extension
  • 레지스터에 대한 offset 차이는 ALU를 통해서 이루어진다. 그런데 ALU는 32bit이므로 32bit끼리의 연산만 가능하다.
    그러나 offset은 immediate 부분에 저장되므로 16bit이다.
    따라서 연산을 위해서는 16bit을 32bit으로 늘려야 한다.

Program Counter

  • 현 시점에서 실행되고 있는 명령어의 주소를 저장하는 register
  • PC=PC+4 (4씩 증가)