我想了解 Q 标志在 ARM 处理器中的重要性。我知道有某些指令,如 QADD、QSUB 等。
但是我需要通过一些可以阐明概念的示例来理解这一点。
请解释一下。
谢谢
我想了解 Q 标志在 ARM 处理器中的重要性。我知道有某些指令,如 QADD、QSUB 等。
但是我需要通过一些可以阐明概念的示例来理解这一点。
请解释一下。
谢谢
这在“ARM 体系结构参考手册”(ARM DDI 0100E)中有说明:
Bit[27]CPSR
是一个粘性溢出标志,也称为 Q 标志。如果发生以下任何情况,则此标志设置为 1:
QADD
orQDADD
指令中加法结果的饱和度QSUB
a orQDSUB
指令中减法结果的饱和度QDADD
orQDSUB
指令中加倍中间结果的饱和度SMLA<x><y>
在orSMLAW<y>
指令期间有符号溢出Q 标志是粘性的,一旦它被设置为 1,它就不受后续计算是否饱和和/或溢出的影响。其预期用途是:
MSR CPSR_f,#0
指令清除 Q 标志(这也清除条件代码标志)。MRS Rn,CPSR
指令读取CPSR
,然后测试 Q 标志的值。如果仍为 0,则在步骤 2 中没有发生上述类型的饱和或溢出。否则,至少发生了 1 个饱和或溢出实例。一个例子:
mov r2,#0x70000000
qadd r3,r2,r2
0x70000000 + 0x70000000
会变成0xE0000000
,但由于qadd
是饱和的,结果饱和到0x7FFFFFFF
(最大的 32 位正整数)并且设置了 Q 标志。