CPU-MIPS32指令架構(無內鎖流水線微處理器)
MIPS32中使用了大量的暫存器。因為暫存器的存取可以在一個時鐘週期內完成,同時也簡化了定址方式。
MIPS32中除了載入和儲存指令外,都是使用暫存器或立即數作為運算元的
MIPS32的暫存器分為兩類:
1,、通用暫存器
暫存器名字 約定命名 用途
$0 zero 總是為0
$1 at 留作彙編器生成一些合成指令
$2-3 v0 v1 用於存放子程式的返回值
$4-7 a0-a3 呼叫子程式時,使用者4個暫存器傳輸前4個非浮點引數
$8-15 t0-t7 臨時暫存器 子程式使用時可以不用儲存和恢復
$16-23 s0-s7 子程式暫存器變數,改變這些暫存器值的子程式必須儲存舊的值並在退出前恢復,對呼叫程式來說值不變
$24 $25 t8 t9 臨時暫存器 子程式使用時可以不用儲存和恢復
$26 27 $k0 $k1 由異常處理程式使用
$28 gp 全域性指標
$29 sp 堆疊指標
$30 s8/fp 子程式可以用來作為堆疊幀指標
$31 ra 存放子程式返回地址
2、特殊暫存器
MIPS32架構中定義了三個特殊暫存器
1.PC 程式計數器
2.HI 乘除結果高位暫存器
3.LO 乘除結果低位暫存器
位元組次序
大端模式 m[n] m[n+1] m[n+2] m[n+3]
小端模式 m[n+3] m[n+2] m[n+1] m[n]
指令格式
R型別(操作由op和func決定 rs RT 是源暫存器編號 rd 是目的暫存器的編號 sa只有在移位指令中使用)
| op | rs | rt | rd | sa | func |
6位 5 5 5 5 6
I型別(操作由op決定 16位的是操作的立即數)
| op | rs | rt | immediate
6位 5 5 16
J型別(操作由op決定 一般是跳轉指令)
| op | address
6 26
定址方式:
MIPS32架構的定址方式有暫存器定址、立即數定址、暫存器相對定址、PC相對定址
1)暫存器相對定址
這種定址方式主要用於載入/儲存指令使用,將一個16位的立即數作為符號拓展,然後與制定通用暫存器的值相加,從而得到一個有效地址
2)PC相對地址
這種定址方式主要用於轉移指令使用,在轉移指令中有一個16位的立即數,將其左移兩位並作為符號拓展,然後與程式計數暫存器進行相加 從而獲得有效地址
協處理器CPO
MIPS32架構提供了最多4個協處理器CP0-CP3
CP0 用作系統控制
CP1 CP3 用作浮點處理單元
CP2 被保留用於特定實現