I've encountered a situation that seems a bit unintuitive when dealing with binary subtraction and the NZCV flag bits.
Consider the following values
0xF7 0b 1111 0111
0xFF 0b 1111 1111
If these are both considered to be 8B values where
0x000000F7 0b 0000 .... 0000 1111 0111
0x000000FF 0b 0000 .... 0000 1111 1111
When subtracted the end result is
0x FF FF FF F8 0b 1111 .... 1000
I understand how this result is found but I don't understand why the carry bit is not set for this operation.
To my knowledge, the carry bit is set when the MSB is borrowed from, is that not the case here?
The ARM subtraction instructions with carry (SBC, RSC) interpret the carry flag (C) as:
0: means borrow
1: means no borrow
So in your calculation the MSB is borrowed and the carry ist NOT set!
User contributions licensed under CC BY-SA 3.0