一般に、Microsoft ARM アセンブラーは ARM アセンブリ言語を使用します。これは、「ARM Compiler armasm Reference Guide」(ARM コンパイラ armasm リファレンス ガイド) に記載されています。 ただし、一部のアセンブリ ディレクティブの Microsoft の実装は、ARM アセンブリ ディレクティブとは異なります。 この記事ではその違いについて説明します。
ARM アセンブリ ディレクティブの Microsoft の場合の実装
AREAMicrosoft 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|GLOBALsymbol{[type]}symbolはエクスポートするシンボルです。[type]が指定されている場合は、シンボルがデータをポイントすることを示す[DATA]か、シンボルがコードをポイントすることを示す[FUNC]かのいずれかになります。GLOBALはEXPORTのシノニムです。EXPORTASサポートされていません。
FRAMEサポートされていません。
FUNCTIONおよびPROCアセンブリ構文を使用すると、プロシージャに対してカスタム呼び出し規則を指定できます。呼び出し元と、呼び出し先が保存するレジスタを一覧表示します。 ただし、Microsoft ARM アセンブラーは構文を受け入れますが、レジスタ リストを無視します。 アセンブラーによって生成されるデバッグ情報は、既定の呼び出し規則のみをサポートします。
IMPORTおよびEXTERN次の構文を使用してインポートを指定します。
IMPORT|EXTERNsymbol{, WEAKalias{, TYPEt}}symbolは、インポートするシンボルの名前です。WEAKaliasが指定されている場合は、symbolが弱い外部であることを示します。 リンク時に定義が見つからない場合は、それに対するすべての参照が、代わりにaliasにバインドされます。TYPEtが指定されている場合、tはリンカーがsymbolの解決を試みる方法を示します。tには次の値を使用できます。値 説明 1 ライブラリで symbolを検索しない。2 symbolでライブラリを検索する。3 symbolはaliasのエイリアスです (既定値)。EXTERNはIMPORTのシノニムです。ただしsymbolは、現在のアセンブリに参照がある場合にのみインポートされます。MACROマクロの条件コードを保持する変数の使用はサポートされていません。 マクロ パラメーターの既定値はサポートされていません。
NOFPサポートされていません。
OPT、TTL、SUBTMicrosoft ARM アセンブラーでは一覧が生成されないため、サポートされていません。
PRESERVE8サポートされていません。
RELOCRELOC nは、命令またはデータ定義ディレクティブにのみ従います。 再設定できる "匿名シンボル" はありません。REQUIREサポートされていません。
REQUIRE8サポートされていません。
THUMBXサポートされていません。Microsoft ARM アセンブラーでは Thumb-2EE 命令セットがサポートされていないためです。