在ARM文档这里中提到:
如果减法的结果为正数或零,则会发生进位carry。
我从这个SO答案中了解到,在无符号数减法中,当被减数(减数)大于减数(被减数)时,会设置进位标志carry flag。
因此,考虑以下示例:
r1 = 5
r2 = 10
CMP r1, r2
Compare (CMP)指令进行减法运算,如此处所述,然后设置相应的标志位。在这种情况下,r1-r2 = 5-10 = -5
。由于我们这里出现了无符号下溢(5 < 10),因此我们期望进位标志被设置。但根据ARM文档,结果(-5)既不是正数也不是零,因此不应设置进位标志。(假设我们以有符号方式查看结果;否则,根据文档,进位永远不会发生)。
ARM文档错了吗?我的理解有误吗?