And*_*Tye 0 assembly arm thumb
MOV R0, #0x80000000
MOV R1, #0x1
SUBS R2, R1, R0
Run Code Online (Sandbox Code Playgroud)
运行此代码后,将设置标志 N 和 Z。现在,我知道如果运算结果为负,则设置 N 标志,而当发生溢出时设置 Z 标志。
我不明白的是,如何0x1 - 0x80000000 导致溢出。任何帮助表示赞赏!
考虑将这两个数字扩展到 36 位。当然,1 仍然是 1。80000000 变为 f80000000。1 - f80000000 = 080000001,正数。由于 080000001 不适合 32 位作为正数,因此存在溢出。