跳轉到內容

MIPS 彙編/算術指令

來自華夏公益教科書,開放的書籍,開放的世界

暫存器算術指令

[編輯 | 編輯原始碼]
指令
add
型別
R 型

此指令將兩個運算元相加,並將結果儲存在目標暫存器中。負數使用 二進位制補碼錶示法 自動處理,因此不需要使用不同的指令來處理有符號數和無符號數。

指令
sub
型別
R 型

sub 指令從第一個源運算元中減去第二個源運算元,並將結果儲存在目標運算元中。在虛擬碼中,操作執行以下操作

rd := rs - rt

addsub 都會在發生溢位時產生陷阱。但是,某些程式設計系統(如 C)會忽略整數溢位,因此為了提高效能,“無符號”版本的指令不會在溢位時產生陷阱。

指令
addu
型別
R 型
指令
subu
型別
R 型

乘法和除法

[編輯 | 編輯原始碼]

乘法和除法操作與其他操作略有不同。即使它們是 R 型操作,它們也只接受 2 個運算元。結果儲存在一個特殊的 64 位結果暫存器中。我們將在本節之後討論結果暫存器。

指令
mult
型別
R 型

此操作將兩個運算元相乘,並將結果儲存在 rd 中。乘法操作必須區分有符號量和無符號量,因為二進位制補碼錶示法的簡單性在乘法中不適用。mult 指令將有符號數相乘並進行符號擴充套件。

將 2 個 32 位數相乘的結果是一個 64 位結果。我們將在下面討論 64 位結果。

指令
multu
型別
R 型

multu 指令將兩個運算元相乘,並將結果儲存在 rd 中。此指令僅用於無符號數,不會對負結果進行符號擴充套件。此操作也會產生 64 位結果。

指令
div
型別
R 型

div 指令將第一個引數除以第二個引數。商儲存在結果暫存器的最低 32 位中。餘數儲存在結果暫存器的最高 32 位中。與乘法一樣,除法也需要區分有符號數和無符號數。此操作使用有符號數。

指令
divu
型別
R 型

與 div 指令一樣,此操作將第一個運算元除以第二個運算元。商儲存在結果的最低 32 位中,餘數儲存在結果的最高 32 位中。此運算元將無符號數相除,不會對結果進行符號擴充套件。

64 位結果

[編輯 | 編輯原始碼]

64 位結果暫存器被分成兩個 32 位段:HILO。我們可以分別使用 mfhi 和 mflo 操作與這些暫存器互動。

指令
mfhi
型別
R 型

只接受 1 個運算元。此指令將結果暫存器的最高 32 位移動到目標暫存器中。

指令
mflo
型別
R 型

也只接受 1 個運算元。將結果暫存器 LO 部分的值移動到指定的暫存器中。

如果乘積的最高(最顯著)32 位對計算不重要,程式設計師可以跳過一步,使用丟棄最高 32 位的指令。

指令
mul
型別
R 型

mul 指令沒有無符號版本。mul 指令也可能會覆蓋 HI 和 LO 中的現有值。

暫存器邏輯指令

[編輯 | 編輯原始碼]

這些操作對它們的運算物件執行按位邏輯運算。

指令
and
型別
R 型

對兩個運算元執行按位 AND 運算,並將結果儲存在 rd 中。

指令
or
型別
R 型

對兩個運算元執行按位 OR 運算,並將結果儲存在 rd 中。

指令
nor
型別
R 型

對兩個運算元執行按位 NOR 運算,並將結果儲存在 rd 中。

指令
xor
型別
R 型

對兩個運算元執行按位 XOR 運算,並將結果儲存在 rd 中。

立即數算術指令

[編輯 | 編輯原始碼]

這些指令將 16 位立即數的值符號擴充套件到 32 位,並執行與不帶尾隨“i”的指令相同的操作。

指令
addi
型別
I 型
指令
addiu
型別
I 型

要減去,請使用負立即數。

立即數邏輯指令

[編輯 | 編輯原始碼]

所有邏輯函式都將立即數零擴充套件。

指令
andi
型別
I 型

將 rs 與立即數的按位 AND 相結合,並將結果儲存在 rt 中。

指令
ori
型別
I 型

將 rs 與立即數的按位 OR 相結合,並將結果儲存在 rt 中。

指令
xori
型別
I 型

將 rs 與立即數的按位 XOR 相結合,並將結果儲存在 rt 中。

移位指令

[編輯 | 編輯原始碼]
指令
sll
型別
R 型

邏輯左移:rd ← rt << shamt。從右邊用零填充位。

指令
srl
型別
R 型

邏輯右移:rd ← rt >> shamt。從左邊用零填充位。

指令
sra
型別
R 型

算術右移。如果 rt 為負數,則用 1 而不是 0 填充前導位:rd ← rt >> shamt。

由於並非所有移位量都是預先知道的,MIPS 定義了這些指令的版本,這些版本按 rs 暫存器中的量進行移位。行為在其他方面是相同的。

指令
sllv
型別
R 型
指令
srlv
型別
R 型
指令
srav
型別
R 型
華夏公益教科書