跳转到内容

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 中。

华夏公益教科书