MIPS 的主要特色

  • 固定指令長度為 32-bit,簡化取用指令的操作
  • 詢址模式較為簡單
  • 指令功能簡單、單純 (一條指令一個動作,能實現部分平行執行)
  • 指令數量少

MIPS  通用暫存器

MIPS 的通用暫存器有以下 32 個:

暫存器名稱暫存器號碼用途
$zero0固定為常數 0,不可改變
$at1保留供組譯器使用
$v0 ~ $v12 – 3傳回值 (values) 暫存器
$a0 – $a34 – 7參數 (arguments) 暫存器
$t0 – $t78 – 15暫時性 (temp) 暫存器
$s0 – $s716 – 23儲存用 (saved) 暫存器
$t8 – $t924 – 25暫時性 (temp) 暫存器
$k0 – $k126 – 27作業系統核心使用 (kernel)
$gp28全域指標 (Global Pointer)
$sp29堆疊指標 (Stack Pointer)
$fp30框指標 (Frame Pointer)
$ra31返回位置 (Return Address)

$at (編號 1)

保留供組譯器使用,當 I 類指令載入超過 16 位的常數時,組譯器會需要將運用 $at 作為暫存區以大常數拆開,重新組合入暫存器中。

MIPS 指令的類型與格式

MIPS 指令有三大類:R、I、J,三種指令的最高六位都是 Opcode。

R 型指令 (Register)

Opcode (31-26)rs (25-21)rt (20-16)rd (15-11)shamt (10-6)funct (5-0)
指令類型
(R 型指令均為 0)
Source Register
第一個來源暫存器
Target Register
第二個來源暫存器
目的地暫存器位移之位數精確定義
指令類型

rs、rt、rd 都是 5-bit,正好可以表示上面的 32 個通用暫存器。

R 型指令的 Opcode 乃是為了對齊其他種指令而生。

I 型指令 (Immediate)

若要使用到立即數 (直接使用一般數字),就會需要使用 I 型指令。

Opcode (31-26)rs (25-21)rt (20-16)immediate (15-0)
指令類型Source Register
來源暫存器
Target Register
目的地暫存器
立即數 (最大可到 2^16)

J 型指令 (Jump)

主要用於非條件式分支指令 (改變程式執行流向時)。

Opcode (31-26)address (25-0)
指令類型目的地位置
  • 嗚嗚,我最討厭硬體了~

    • Jyun Ming Huang

      我也很討厭 囧
      唸計組唸到都快回去祭祖了,結果還是炸開了唉

  • 話說我要求下集啦!!

    • Andrew Huang

      可是我不想要有下集 QQ