SPARC 汇编/控制流
外观
< SPARC 汇编
指令
|
cmp
|
比较两个数字(减法)。设置标志位。
指令
|
tst
|
测试两个数字(执行“与”操作)。设置标志位。
指令
|
jmp
|
跳转到指定的间接地址。将返回值存储在 %o7 中。
指令
|
jmpl
|
执行无条件的寄存器间接跳转。目标地址在第一个操作数中提供,然后返回值存储到 rd 操作数中。
jmpl rs1, rd
如果返回值存储在 %o7 中,则此操作类似于子程序调用。如果返回值存储在 %g0 中,则它类似于子程序返回。
指令
|
sethi
|
设置目标寄存器的最高 22 位,将最低 10 位设置为零。
sethi const22, rd
const22 必须是常数值,不能是寄存器。
指令
|
call
|
调用子程序。以单个标签作为新的目标地址。将返回值存储在 %o7 中。不能跳转到寄存器间接地址。
指令
|
ret
|
从子程序返回。
指令
|
retl
|
从叶子子程序返回。
指令
|
rett
|
从陷阱指令或寄存器间接控制转移返回。
指令
|
save
|
保存当前寄存器窗口并创建一个新窗口。如果发生寄存器窗口溢出,则引发异常。
指令
|
restore
|
恢复已保存的寄存器窗口。
分支不会存储返回值。
指令
|
ba
|
始终分支。无条件跳转到目标位置。d
指令
|
bn
|
从不分支。
指令
|
be
|
指令
|
bne
|
如果两个操作数分别相等或不相等,则分支。
指令
|
bl
|
在“小于”时分支
指令
|
ble
|
在“小于或等于”时分支
指令
|
bge
|
在“大于或等于”时分支
指令
|
bg
|
在“大于”时分支
指令
|
blu
|
指令
|
bleu
|
与 bl 和 ble 相同,但使用无符号数
指令
|
bgeu
|
指令
|
bgu
|
与 bge 和 bg 相同,但使用无符号数
指令
|
bpos
|
如果数字为正,则分支。
指令
|
bneg
|
如果数字为负,则分支。
指令
|
bcs
|
指令
|
bcc
|
如果进位位分别设置或清除,则分支。
指令
|
bvs
|
指令
|
bvc
|
如果带符号溢出位分别设置或清除,则分支。