我理解ARM中的SBC指令是如何工作的。
但是,我似乎并不了解它将如何有用,因为预期答案总是少于1 。
示例:
MOV r1, #0x88
MOV r2, #0x44
SUB r3, r1, r2
SBC r4, r1, r2
此操作后,r3有0x44(正确),r4有0x43(不正确)。
我不知道在哪种情况下SBC是比SUB更相关的操作。
感谢。
答案 0 :(得分:0)
此操作是将结果(PSTATE.C
)添加到结果的子站:
r4 = r1 - r2 - (1-CPSR.C)
CPSR.NZCV已由先前设置标志的操作设置(例如CMP
或ADDS
)。
此类操作可用于大整数添加。
例如,在Aarch32中,如果要计算64位加法,则添加32位底部位(ADDS
),然后使用ADDC
进行前32位加法传播。