二进制减法,进位没有设置?

Binary subtraction, carry bit not set?

在处理二进制减法和 NZCV 标志位时,我遇到了一种似乎有点不直观的情况。

考虑以下值

0xF7      0b 1111 0111
0xFF      0b 1111 1111

如果这些都被认为是 8B 值,其中

0x000000F7      0b 0000 .... 0000 1111 0111
0x000000FF      0b 0000 .... 0000 1111 1111

相减后的最终结果是

0x FF FF FF F8    0b 1111 .... 1000

我明白这个结果是如何找到的,但我不明白为什么没有为这个操作设置进位位。

据我所知,借用MSB时设置了进位位,这里不是这样吗?

带进位的ARM减法指令(SBC、RSC)将进位标志(C)解释为:

0: means borrow

1: means no borrow

所以在你的计算中,MSB 是借来的,进位没有设置!