ARM Cortex-M4 通用用户指南的第 88 页说“SBC 指令从 Rn 中的值中减去 Operand2 的值。如果进位标志为 CLEAR,则结果减一。” 为什么当进位标志是 CLEAR 而不是 SET 时结果减 1?我认为SBC指令从Rn减去operand2的结果中减去进位标志的值,因此当进位标志为SET时结果减1。我错了吗?
帮助理解ARM Cortex-M4 SBC指令
逆向工程
部件
手臂
2021-06-14 14:03:00
1个回答
ARM 使用加法和第二个参数的补码来实现减法。不同寻常的是,此实现细节在进位标志行为中公开。
您链接到的用户指南的第 66 页 (3-19) 上的条件标志说明解释了此异常 -
A carry occurs:
• ...
• if the result of a subtraction is positive or zero
• ...
Stack Overflow here上有一个类似的回答问题。