我理解ARM中的SBC指令是如何工作的。
但是,我似乎不明白这将如何是有用的,因为预期的答案总是减去1。
示例:
MOV r1, #0x88
MOV r2, #0x44
SUB r3, r1, r2
SBC r4, r1, r2在此操作之后,r3有0x44 (正确),r4有0x43 (不正确)。
我看不出在这种情况下,SBC是一个比SUB更相关的操作。
谢谢。
发布于 2018-03-26 14:31:25
此操作是将进位(PSTATE.C)添加到结果的减法:
r4 = r1 - r2 - (1-CPSR.C)
CPSR.NZCV是由以前设置标志的操作设置的(例如CMP或ADDS)。
这种类型的操作对于大整数加法很有用。
例如,在Aarch32中,如果您想要计算64位的加法,您可以添加32位的底部位(ADDS),然后使用ADDC来执行带进位传播的前32位。
https://stackoverflow.com/questions/49493617
复制相似问题