ARM アセンブラー ディレクティブ
一般に、Microsoft ARM アセンブラーは ARM アセンブリ言語を使用します。これは、「ARM Compiler armasm Reference Guide」(ARM コンパイラ armasm リファレンス ガイド) に記載されています。 ただし、一部のアセンブリ ディレクティブの Microsoft の実装は、ARM アセンブリ ディレクティブとは異なります。 この記事ではその違いについて説明します。
ARM アセンブリ ディレクティブの Microsoft の場合の実装
AREA
Microsoft ARM アセンブラーでは、次の
AREA
属性がサポートされています。ALIGN
、CODE
、CODEALIGN
、DATA
、NOINIT
、READONLY
、READWRITE
、THUMB
、ARM
。THUMB
とARM
を除くすべてが、「ARM Compiler armasm Reference Guide」(ARM コンパイラ armasm リファレンス ガイド) に記されているように動作します。Microsoft ARM アセンブラーでは、
THUMB
は、CODE
セクションに Thumb コードが含まれ、CODE
セクションの既定値であることを示します。ARM
は、セクションに ARM コードが含まれていることを示します。ATTR
サポートされていません。
CODE16
サポートされていません。これは、Microsoft ARM アセンブラーで許可されていない UAL より前の Thumb 構文を意味するためです。 代わりに、
THUMB
ディレクティブを UAL 構文と共に使用します。COMMON
共通リージョンのアラインメントの指定はサポートされていません。
DCDO
サポートされていません。
DN
、QN
、SN
レジスタ エイリアスの型またはレーンの指定はサポートされていません。
ENTRY
サポートされていません。
EQU
定義されたシンボルの型の指定はサポートされていません。
EXPORT
およびGLOBAL
次の構文を使用してエクスポートを指定します。
EXPORT
|GLOBAL
symbol
{[type]
}symbol
はエクスポートするシンボルです。[type]
が指定されている場合は、シンボルがデータをポイントすることを示す[DATA]
か、シンボルがコードをポイントすることを示す[FUNC]
かのいずれかになります。GLOBAL
はEXPORT
のシノニムです。EXPORTAS
サポートされていません。
FRAME
サポートされていません。
FUNCTION
およびPROC
アセンブリ構文を使用すると、プロシージャに対してカスタム呼び出し規則を指定できます。呼び出し元と、呼び出し先が保存するレジスタを一覧表示します。 ただし、Microsoft ARM アセンブラーは構文を受け入れますが、レジスタ リストを無視します。 アセンブラーによって生成されるデバッグ情報は、既定の呼び出し規則のみをサポートします。
IMPORT
およびEXTERN
次の構文を使用してインポートを指定します。
IMPORT
|EXTERN
symbol
{, WEAK
alias
{, TYPE
t
}}symbol
は、インポートするシンボルの名前です。WEAK
alias
が指定されている場合は、symbol
が弱い外部であることを示します。 リンク時に定義が見つからない場合は、それに対するすべての参照が、代わりにalias
にバインドされます。TYPE
t
が指定されている場合、t
はリンカーがsymbol
の解決を試みる方法を示します。t
には次の値を使用できます。値 説明 1 ライブラリで symbol
を検索しない。2 symbol
でライブラリを検索する。3 symbol
はalias
のエイリアスです (既定値)。EXTERN
はIMPORT
のシノニムです。ただしsymbol
は、現在のアセンブリに参照がある場合にのみインポートされます。MACRO
マクロの条件コードを保持する変数の使用はサポートされていません。 マクロ パラメーターの既定値はサポートされていません。
NOFP
サポートされていません。
OPT
、TTL
、SUBT
Microsoft ARM アセンブラーでは一覧が生成されないため、サポートされていません。
PRESERVE8
サポートされていません。
RELOC
RELOC n
は、命令またはデータ定義ディレクティブにのみ従います。 再設定できる "匿名シンボル" はありません。REQUIRE
サポートされていません。
REQUIRE8
サポートされていません。
THUMBX
サポートされていません。Microsoft ARM アセンブラーでは Thumb-2EE 命令セットがサポートされていないためです。