不了解ARM Cortex M4上的条件标志

时间:2016-02-13 15:58:54

标签: arm

我无法理解为什么要设置某些xPRS条件标志。

这是代码(我对xPRS标志值进行了评论):

MOVS R0, #0            ; n=0 z=1 c=0 v=0
MOVS R1, #1            ; n=0 z=0 c=0 v=0
MVNS R2, #0            ; n=1 z=0 c=0 v=0
MOVS R3, #0x80000000   ; n=1 z=0 c=1 v=0
MOVS R4, R0            ; n=0 z=1 c=1 v=0
MOVS R5, R1            ; n=0 z=0 c=1 v=0
MOVS R6, R2            ; n=0 z=1 c=1 v=0

我理解问题的部分来自第4行(MOVS R3,#0x80000000)。

ARM用户指南说“当Operand2常量与指令MOVS,MVNS,ANDS,ORRS,ORNS,EORS,BICS,TEQ或TST一起使用时,进位标志更新为常量位[31] ,如果常量大于255并且可以通过移位8位值产生。如果Operand2是任何其他常数,这些指令不会影响进位标志。“

这很好,所以C标志打开的原因是由于0x80000000将位[31]作为1,这又将C标志设置为1.

但是我也有N标志,所以我认为bit [31]也可能是符号,所以也许0x80000000实际上代表-0(bit [31]这是符号为1,其余0是哪个是数字,但是Z标志没有打开,所以情况不是这样吗?为什么它是N而不是Z?

由于

0 个答案:

没有答案