1. 程式人生 > >CPU-MIPS32指令架構(無內鎖流水線微處理器)

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  被保留用於特定實現