SPARC 汇编/算术指令
这些是用于加法、减法和乘法的基本运算。请注意,这些算术指令中的任何一个都可以将寄存器或立即值作为op2参数。所有其他参数(rd 和rs1必须是寄存器)。
指令
|
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 寄存器。
指令
|
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 中。