アセンブラ制御
構文
$filename
/* comment */
// comment
CASEOFF
CASEON
INCLUDE filename
LTORG
RADIX expr
パラメータ
| アセンブラに無視されるコメント。 |
| デフォルトベース—デフォルトは10(10進数)。 |
| インクルードするファイルの名称です。行の最初の文字は |
説明
これらのディレクティブは、アセンブラの動作を制御します。式でディレクティブを使用する際に適用される制限については、式の制限を参照してください。
ディレクティブ | 説明 | 式の制限 |
|---|---|---|
ファイルをインクルードします。 | ||
C形式のコメント区切り文字 | ||
C++スタイルのコメント区切り文字 | ||
大文字/小文字の区別を無効にします。 | ||
大文字/小文字の区別を有効にします。 | ||
ファイルをインクルードします。 | ||
リテラルプールをディレクティブの直後にアセンブルするように指示します。 | ||
すべての数値にデフォルトベースを設定します。 | 前方参照禁止 外部参照禁止 絶対 固定 |
ファイルの内容を、ソースファイル中の指定した箇所に挿入するには$ を使用します。$filenameは、#include "filename"のエイリアスです。C形式のプリプロセッサディレクティブのソースファイルのインクルード項の章を参照してください。行の最初の文字は$でなければなりません。
アセンブラリストのセクションにコメントするには/*...*/を使用します。
残りの行をコメントとしてマーキングするには、//を使用します。
ファイルの内容をソースファイルの指定されたポイントに挿入するには、INCLUDEを使用します。INCLUDE filenameは、#include <filename>のエイリアスです。C形式のプリプロセッサディレクティブのソースファイルのインクルード項の章を参照してください。INCLUDEは、システムヘッダディレクトリでの検索のみを行います。
現在のリテラルプールがどこでアセンブルされるか指示するには、LTORGを使用します。デフォルトでは、ENDおよびRSEGディレクティブごとにこれが行われます。この例については、LDR (ARM)を参照してください。
デフォルトの定数用ベースを設定するには、RADIXを使用します。 デフォルトのベースは10です。
大文字/ 小文字の区別の制御
CASEONまたはCASEOFFを使用して、ユーザ定義シンボルで大文字と小文字を区別するかどうかを切り替えます。デフォルトでは、大文字と小文字が区別されません。
CASEOFFを有効にすると、すべてのシンボルは大文字で格納され、ilinkで使用されるすべてのシンボルはilink定義ファイルに大文字で記述する必要があります。
CASEOFFを設定すると、以下の例では、labelとLABELが同じになります。
module caseSensitivity1
section MYCODE:CODE(2)
caseoff
label nop ; Stored as "LABEL".
b LABEL
end以下の例では、重複ラベルエラーが生成されます。
module caseSensitivity2
caseoff
label nop ; Stored as "LABEL".
LABEL nop ; Error, "LABEL" already defined.
endソースファイルのインクルード
この例では、マクロを定義するファイルをソースファイルにインクルードするため、$を使用しています。たとえば、次のようなマクロをMacros.incに定義できます。
; Exchange registers a and b.
; Use register c for temporary storage.
xch macro a,b,c
movs c,a
movs a,b
movs b,c
endmマクロ定義は次のように$ディレクティブによってインクルードできます。
name includeFile
section MYCODE:CODE(2)
; Standard macro definitions.
$Macros.inc
xchRegs xch r0,r1,r2
bx lr
endコメントの定義
以下の例は、複数行から成るコメントでの/*...*/の使用方法を示します。
/* Program to read serial input. Version 1: 19.2.11 Author: mjp */
C形式のプリプロセッサディレクティブにあるC形式のプリプロセッサディレクティブでのコメント章も参照してください。
ベースの変更
デフォルトベースを16に設定するには、次のように指定します。
module radix
section MYCODE:CODE(2)
radix 16 ; With the default base set
movs r0,#12 ; to 16, the immediate value
;... ; of the mov instruction is
; interpreted as 0x12.
; To reset the base from 16 to 10 again, the argument must be
; written in hexadecimal format.
radix 0x0a ; Reset the default base to 10.
movs r0,#12 ; Now, the immediate value of
;... ; the mov instruction is
; interpreted as 0x0c.
end