読み出し-変更-書き込みプロシージャ

システムレジスタの特定のビットを変更する場合は、同じレジスタの他のビットを変更しないようにする必要があります。その理由は、システムジスタの各ビットによって、システムのさまざまな機能が制御されているため、変更するとプログラムが正常に動作しなくなる可能性があるかです。目的のビットのみを確実に変更するには、読み出し-変更-書き込みプロシージャを使用する必要があります。

システムレジスタに対して読み出し-変更-書き込みを行うには、以下の命令シーケンスに従う必要があります。

  1. 最初の命令で、ターゲットシステムレジスタから一時的な汎用レジスタに値をコピーします。

  2. 次の 1 つ以上の命令で、汎用レジスタの必要なビットを変更します。変更は、以下のいずれかまたは両方の方法で行います。

    • BIC を使用して、クリアする必要があるビットのみを 0 にクリアする。

    • ORR を使用して、設定する必要があるビットのみを 1 に設定する。

  3. 最後の命令で、汎用レジスタからターゲットシステムレジスタに値を書き込みます。

Show/hide

この例では、他のビットに影響を及ぼすことなく、NEON/VFP システムレジスタ FPSCR の一部のビットだけを変更する読み出し-変更-書き込みプロシージャを示します。

    VMRS    r10,FPSCR           ; FPSCR を汎用レジスタ r10 にコピーする
    BIC     r10,r10,#0x00370000 ; STRIDE ビット [21:20] および LEN ビット [18:16] をクリアする
    ORR     r10,r10,#0x00030000 ; ビット [17:16] を設定する(STRIDE =1 および LEN = 4)
    VMSR    FPSCR,r10           ; r10 を FPSCR にコピーする

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0473FJ
Non-ConfidentialID111311