在处理二进制减法和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借用时,进位被设置了,不是吗?
答案 0 :(得分:3)
带有进位(SBC,RSC)的ARM减法指令将进位标志(C)解释为:
0:表示借用
1:表示无借贷
因此,在您进行计算时,MSB是借来的,并且未设置进位符!