ARM プロセッサにおける Q フラグの重要性を理解したい。QADD、QSUBなどの特定の命令があることは知っています。
しかし、概念を明確にするいくつかの例でこれを理解する必要があります。
説明してください。
ありがとうございました
ARM プロセッサにおける Q フラグの重要性を理解したい。QADD、QSUBなどの特定の命令があることは知っています。
しかし、概念を明確にするいくつかの例でこれを理解する必要があります。
説明してください。
ありがとうございました
これについては、「ARM アーキテクチャ リファレンス マニュアル」(ARM DDI 0100E) で説明されています。
のビット [27] はCPSR、Q フラグとも呼ばれるスティッキー オーバーフローフラグです。このフラグは、次のいずれかが発生した場合に 1 に設定されます。
QADDorQDADD命令での加算結果の飽和QSUB命令QDSUBが生成されます。QDADDorQDSUB命令での倍増中間結果の飽和SMLA<x><y>orSMLAW<y>命令中の符号付きオーバーフローQ フラグは、いったん 1 に設定されると、後続の計算が飽和および/またはオーバーフローしても影響を受けないという点でスティッキーです。その使用目的は次のとおりです。
MSR CPSR_f,#0て Q フラグをクリアします (これにより、条件コード フラグもクリアされます)。MRS Rn,CPSR命令を使用して を読み取りCPSR、Q フラグの値をテストします。それでも 0 の場合は、ステップ 2 で上記のタイプの飽和またはオーバーフローは発生していません。例:
mov r2,#0x70000000
qadd r3,r2,r2
0x70000000 + 0x70000000になります0xE0000000が、qaddは飽和しているため、結果は0x7FFFFFFF(最大の正の 32 ビット整数) に飽和し、Q フラグが設定されます。