跳轉到內容

SPARC 彙編/算術指令

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

算術指令

[編輯 | 編輯原始碼]

這些是用於加法、減法和乘法的基本運算。請注意,這些算術指令中的任何一個都可以將暫存器或立即值作為op2引數。所有其他引數(rdrs1必須是暫存器)。

指令
add

將 rs1 和 op2 相加,並將結果儲存在 rd 中。

指令
addcc

與上面相同,只是它設定條件碼。

指令
sub

從 rs1 中減去 op2,並將差值儲存在 rd 中

指令
subcc

與上面相同,只是它設定條件碼。

指令
mulcc

執行乘法運算中的單個步驟。將部分結果儲存在 Y 暫存器中。完整的乘法演算法將在後面詳細討論。

擴充套件精度

[編輯 | 編輯原始碼]

這些指令考慮了進位位的設定,以便可以將大數字(大於機器字)虛擬地作為單個實體進行操作。

指令
addx

執行擴充套件加法(將兩個運算元和進位位相加),並將結果儲存在 rd 中。

指令
addxcc

與上面相同,但設定條件碼。

指令
subx

執行擴充套件減法(從 rs1 中減去 op2 和 C),並將結果儲存在 rd 中。

指令
subxcc

與上面相同,但設定條件碼。

標記指令

[編輯 | 編輯原始碼]
指令
tsubcc
指令
tsubcctv
指令
taddcc
指令
taddcctv

Y 暫存器

[編輯 | 編輯原始碼]

這些操作會影響 Y 暫存器。

指令
rdy

將 Y 暫存器的內容讀入 rd 目標暫存器

指令
wry

對 rs1 和 op2 值進行異或運算,並將結果儲存在 Y 暫存器中。

邏輯指令

[編輯 | 編輯原始碼]
指令
and

執行 rs1 和 op2 的按位與運算,並將結果儲存在 rd 中。

指令
andcc

與上面相同,設定條件碼。

指令
or

執行 rs1 和 op2 的按位或運算,並將結果儲存在 rd 中。

指令
orcc

與上面相同,設定條件碼。

指令
xor

執行 rs1 和 op2 之間的按位異或運算。將結果儲存在 rd 中。

指令
xorcc

與上面相同,設定條件碼。

指令
xnor

執行 rs1 和 op2 之間的按位異或非運算。將結果放入 rd 中。

指令
xnorcc

與上面相同,設定條件碼。

反向邏輯運算

[編輯 | 編輯原始碼]
指令
andn

將 rs1 與 op2 的按位反運算進行與運算。將結果儲存在 rd 中。

指令
andncc

與上面相同,設定條件碼。

指令
orn

將 rs1 與 op2 的按位反運算進行或運算。將結果儲存在 rd 中。

指令
orncc

與上面相同,設定條件碼。

移位指令

[編輯 | 編輯原始碼]
指令
sll

執行 rs1 的邏輯左移。移位量根據 op2 的值確定。將結果儲存在 rd 中。

指令
srl

執行 rs1 的邏輯右移。移位量是 op2 的值。將結果儲存到 rd 中。

指令
sra

執行 rs1 的算術右移。移位量是 op2 的值。將結果儲存在 rd 中。

華夏公益教科書