| 指令 |
功能 |
應用實例 |
| LB |
從存儲器中讀取一個字節的數據到寄存器中 |
LB R1, 0(R2) |
| LH |
從存儲器中讀取半個字的數據到寄存器中 |
LH R1, 0(R2) |
| LW |
從存儲器中讀取一個字的數據到寄存器中 |
LW R1, 0(R2) |
| LD |
從存儲器中讀取雙字的數據到寄存器中 |
LD R1, 0(R2) |
| L.S |
從存儲器中讀取單精度浮點數到寄存器中 |
L.S R1, 0(R2) |
| L.D |
從存儲器中讀取雙精度浮點數到寄存器中 |
L.D R1, 0(R2) |
| LBU |
功能與LB指令相同,但讀出的是不帶符號的數據 |
LBU R1, 0(R2) |
| LHU |
功能與LH指令相同,但讀出的是不帶符號的數據 |
LHU R1, 0(R2) |
| LWU |
功能與LW指令相同,但讀出的是不帶符號的數據 |
LWU R1, 0(R2) |
| SB |
把一個字節的數據從寄存器存儲到存儲器中 |
SB R1, 0(R2) |
| SH |
把半個字節的數據從寄存器存儲到存儲器中 |
SH R1,0(R2) |
| SW |
把一個字的數據從寄存器存儲到存儲器中 |
SW R1, 0(R2) |
| SD |
把兩個字節的數據從寄存器存儲到存儲器中 |
SD R1, 0(R2) |
| S.S |
把單精度浮點數從寄存器存儲到存儲器中 |
S.S R1, 0(R2) |
| S.D |
把雙精度數據從存儲器存儲到存儲器中 |
S.D R1, 0(R2) |
| DADD |
把兩個定點寄存器的內容相加,也就是定點加 |
DADD R1,R2,R3 |
| DADDI |
把一個寄存器的內容加上一個立即數 |
DADDI R1,R2,#3 |
| DADDU |
不帶符號的加 |
DADDU R1,R2,R3 |
| DADDIU |
把一個寄存器的內容加上一個無符號的立即數 |
DADDIU R1,R2,#3 |
| ADD.S |
把一個單精度浮點數加上一個雙精度浮點數,結果是單精度浮點數 |
ADD.S F0,F1,F2 |
| ADD.D |
把一個雙精度浮點數加上一個單精度浮點數,結果是雙精度浮點數 |
ADD.D F0,F1,F2 |
| ADD.PS |
兩個單精度浮點數相加,結果是單精度浮點數 |
ADD.PS F0,F1,F2 |
| DSUB |
兩個寄存器的內容相減,也就是定點數的減 |
DSUB R1,R2,R3 |
| DSUBU |
不帶符號的減 |
DSUBU R1,R2,R3 |
| SUB.S |
一個雙精度浮點數減去一個單精度浮點數,結果為單精度 |
SUB.S F1,F2,F3 |
| SUB.D |
一個雙精度浮點數減去一個單精度浮點數,結果為雙精度浮點數 |
SUB.D F1,F2,F3 |
| SUB.PS |
兩個單精度浮點數相減 |
SUB.SP F1,F2,F3 |
| DDIV |
兩個定點寄存器的內容相除,也就是定點除 |
DDIV R1,R2,R3 |
| DDIVU |
不帶符號的除法運算 |
DDIVU R1,R2,R3 |
| DIV.S |
一個雙精度浮點數除以一個單精度浮點數,結果為單精度浮點數 |
DIV.S F1,F2,F3 |
| DIV.D |
一個雙精度浮點數除以一個單精度浮點數,結果為雙精度浮點數 |
DIV.D F1,F2,F3 |
| DIV.PS |
兩個單精度浮點數相除,結果為單精度 |
DIV.PS F1,F2,F3 |
| DMUL |
兩個定點寄存器的內容相乘,也就是定點乘 |
DMUL R1,R2,R3 |
| DMULU |
不帶符號的乘法運算 |
DMULU R1,R2,R3 |
| MUL.S |
一個雙精度浮點數乘以一個單精度浮點數,結果為單精度浮點數 |
DMUL.S F1,F2,F3 |
| MUL.D |
一個雙精度浮點數乘以一個單精度浮點數,結果為雙精度浮點數 |
DMUL.D F1,F2,F3 |
| MUL.PS |
兩個單精度浮點數相乘,結果為單精度浮點數 |
DMUL.PS F1,F2,F3 |
| AND |
與運算,兩個寄存器中的內容相與 |
ANDR1,R2,R3 |
| ANDI |
一個寄存器中的內容與一個立即數相與 |
ANDIR1,R2,#3 |
| OR |
或運算,兩個寄存器中的內容相或 |
ORR1,R2,R3 |
| ORI |
一個寄存器中的內容與一個立即數相或 |
ORIR1,R2,#3 |
| XOR |
異或運算,兩個寄存器中的內容相異或 |
XORR1,R2,R3 |
| XORI |
一個寄存器中的內容與一個立即數異或 |
XORIR1,R2,#3 |
| BEQZ |
條件轉移指令,當寄存器中內容為0時轉移發生 |
BEQZ R1,0 |
| BENZ |
條件轉移指令,當寄存器中內容不為0時轉移發生 |
BNEZ R1,0 |
| BEQ |
條件轉移指令,當兩個寄存器內容相等時轉移發生 |
BEQ R1,R2 |
| BNE |
條件轉移指令,當兩個寄存器中內容不等時轉移發生 |
BNE R1,R2 |
| J |
直接跳轉指令,跳轉的地址在指令中 |
J name |
| JR |
使用寄存器的跳轉指令,跳轉地址在寄存器中 |
JR R1 |
| JAL |
直接跳轉指令,並帶有鏈接功能,指令的跳轉地址在指令中,跳轉發生時要把返回地址存放到R31這個寄存器中 |
JAL R1 name |
| JALR |
使用寄存器的跳轉指令,並且帶有鏈接功能,指令的跳轉地址在寄存器中,跳轉發生時指令的放回地址放在R31這個寄存器中 |
JALR R1 |
| MOV.S |
把一個單精度浮點數從一個浮點寄存器復制到另一個浮點寄存器 |
MOV.S F0,F1 |
| MOV.D |
把一個雙精度浮點數從一個浮點寄存器復制到另一個浮點寄存器 |
MOV.D F0,F1 |
| MFC0 |
把一個數據從通用寄存器復制到特殊寄存器 |
MFC0 R1,R2 |
| MTC0 |
把一個數據從特殊寄存器復制到通用寄存器 |
MTC0 R1,R2 |
| MFC1 |
把一個數據從定點寄存器復制到浮點寄存器 |
MFC1 R1,F1 |
| MTC1 |
把一個數據從浮點寄存器復制到定點寄存器 |
MTC1 R1,F1 |
| LUI |
把一個16位的立即數填入到寄存器的高16位,低16位補零 |
LUI R1,#42 |
| DSLL |
雙字邏輯左移 |
DSLL R1,R2,#2 |
| DSRL |
雙字邏輯右移 |
DSRL R1,R2,#2 |
| DSRA |
雙字算術右移 |
DSRA R1,R2,#2 |
| DSLLV |
可變的雙字邏輯左移 |
DSLLV R1,R2,#2 |
| DSRLV |
可變的雙字羅伊右移 |
DSRLV R1,R2,#2 |
| DSRAV |
可變的雙字算術右移 |
DSRAV R1,R2,#2 |
| SLT |
如果R2的值小於R3,那么設置R1的值為1,否則設置R1的值為0 |
SLT R1,R2,R3 |
| SLTI |
如果寄存器R2的值小於立即數,那么設置R1的值為1,否則設置寄存器R1的值為0 |
SLTI R1,R2,#23 |
| SLTU |
功能與SLT一致,但是帶符號的 |
SLTU R1,R2,R3 |
| SLTUI |
功能與SLT一致,但不帶符號 |
SLTUI R1,R2,R3 |
| MOVN |
如果第三個寄存器的內容為負,那么復制一個寄存器的內容到另外一個寄存器 |
MOVN R1,R2,R3 |
| MOVZ |
如果第三個寄存器的內容為0,那么復制一個寄存器的內容到另外一個寄存器 |
MOVZ R1,R2,R3 |
| TRAP |
根據地址向量轉入管態 |
|
| ERET |
從異常中返回到用戶態 |
|
| MADD.S |
一個雙精度浮點數與單精度浮點數相乘加,結果為單精度 |
|
| MADD.D |
一個雙精度浮點數與單精度浮點數相乘加,結果為雙精度 |
|
| MADD.PS |
兩個單精度浮點數相乘加,結果為單精度 |
