ARM、THUMB、THUMBX、CODE16、CODE32

ARM ディレクティブと CODE32 ディレクティブは同じ意味です。これらは、UAL または UAL 以前の ARM アセンブラ言語構文のいずれかを使用して、後に続く命令を ARM 命令として釈するようアセンブラに指示します。

THUMB ディレクティブは、UAL 構文を使用して、後に続く命令を Thumb 命令として解釈するようにアセンブラに指示します。

THUMBX ディレクティブは、UAL 構文を使用して、後に続く命令を Thumb-2EE 命令として解釈するようにアセンブラに指示します。

CODE16 ディレクティブは、UAL 以前のアセンブリ言語構文を使用して、後に続く命令を Thumb 命令として解釈するようにアセンブラに指示します。

これらのディレクティブはまた、必要に応じて、ARM に関しては最大 3 バイトのパディングを挿入して次のワード境界で整列させ、Thumb または Thumb-2EE に関しては最大 1 バイトのパディングを挿入して次のハーフワード境界で整列させます。

Show/hide構文

ARM
THUMB
THUMBX
CODE16
CODE32

Show/hide使用法

異なる命令セットを使用したコードを含むファイルでは、以下のようになります。

  • ARM は ARM コードの前に配置する必要があります。CODE32ARM と同じ意味です。

  • THUMB は、UAL 構文で記述された Thumb コードの前に配置する必要があります。

  • THUMBX は、UAL 構文で記述された Thumb-2EE コードの前に配置する必要があります。

  • CODE16 は、UAL 以前の構文で記述された Thumb コードの前に配置する必要があります。

これらのディレクティブをアセンブルしても、命令は生成されません。また、状態が変更されるわけでもありません。これらのディレクティブはARM、Thumb、または Thumb-2EE の命令を適切にアセンブルするようアセンブラに指示し、必要に応じてパディングを挿入するだけです。

Show/hide

この例は、ARM および THUMB を使用して、状態を切り替え、ARM 命令と Thumb 命令を両方とも 1 つの領域でアセンブルする方法を示しています。

        AREA ToThumb, CODE, READONLY    ; このコードブロックに名前を付ける
        ENTRY                           ; 最初に実行する命令をマークする
        ARM                             ; 後に続く命令は ARM
start
        ADR     r0, into_thumb + 1      ; プロセッサは ARM 状態で起動する
        BX      r0                      ; Thumb 状態へのインライン切り替え
        THUMB                           ; 後に続く命令は Thumb
into_thumb
        MOVS    r0, #10                 ; 新しい形式の Thumb 命令
Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0489EJ
Non-ConfidentialID081711