アーキテクチャは、疑似命令 target <アーキテクチャ名>
で設定できる。
アーキテクチャ名 | アーキテクチャ |
---|---|
gmc4 | GMC-4 |
orange4 | ORANGE-4 |
mieru | MIPS |
td4 | TD4 |
calico | CalicoCPU |
nlp16 | NLP-16 |
8080 | Intel 8080 |
z80 | Z80 |
疑似命令の大文字・小文字は区別しない。
疑似命令 | 説明 |
---|---|
org <ラベル位置> [, <配置位置>] |
次に配置するデータの位置(アドレス)を設定する。 「ラベル位置」は、ラベルやアライメントに用いられる位置である。 「配置位置」は、出力データに記録する位置である。 |
defaultplace <ラベル位置変数>, <配置位置> |
org 疑似命令で配置位置を省略した時の配置位置を設定する。配置位置は、 org 疑似命令で設定したラベル位置を「ラベル位置変数」に代入し、式を評価した結果となる。この疑似命令を使用していない場合、省略時の配置位置はラベル位置と同じになる。 |
passlimit <最大アセンブル回数> |
アセンブルを繰り返す最大の回数を設定する。 最初の繰り返しで設定された値のみが採用される。 ソースコード中に複数回現れてはいけない。 アセンブルを複数回繰り返すことで、使われる位置より後に定義されるラベルを反映させる。 アセンブルの繰り返しは、以下の条件のいずれかを満たすと終了する。
|
outoption [<式> [, <式> [, ...]]] |
出力形式固有のオプションを設定する。 「式」には文字列も指定できる。 |
align <割る数> [, <余り>] |
データの出力位置を0バイト以上進め、出力位置(ラベル位置)を「割る数」で割った余りが「余り」になるようにする。 「余り」を省略した場合は、0とする。 |
alignfill <割る数>, <埋める値> [, <余り>] |
「埋める値」のバイトを0個以上出力し、出力位置(ラベル位置)を「割る数」で割った余りが「余り」になるようにする。 「余り」を省略した場合は、0とする。 |
space <サイズ> |
データの出力位置を「サイズ」バイト進める。(0バイト以上) 例えば、データを出力せずに変数の領域を確保できる。 |
fill <サイズ>, <埋める値> |
「埋める値」のバイトを「サイズ」個出力する。 |
fillto <位置>, <埋める値> |
データの出力位置(ラベル位置)が「位置」になるまで、「埋める値」のバイトを出力する。 「位置」は現在のデータの出力位置以上でなければならない。 |
target <アーキテクチャ名> |
使用するアーキテクチャを設定する。 アーキテクチャ名の大文字・小文字は区別しない。 |
endianness <エンディアン名> |
データ(命令を含む)を出力する際のエンディアンを指定する。 出力形式におけるエンディアン(表示上のエンディアン)には反映されない。 エンディアン名は以下のいずれかである。(大文字・小文字は区別しない)
|
define <識別子>, <式> |
「識別子」の値を「式」の計算結果とする。 「識別子」はこれまでに定義されていないものでなければならない。 (ラベルとして定義されていてもいけない) |
redefine <識別子>, <式> |
「識別子」の値を「式」の計算結果とする。 「識別子」はこれまでに定義されているものでなければならない。 (ラベルとしての定義は含まない) |
data <式> [, <式> [, ...]] datan <式> [, <式> [, ...]] datab <式> [, <式> [, ...]] dataw <式> [, <式> [, ...]] datal <式> [, <式> [, ...]] dataq <式> [, <式> [, ...]]
|
「式」の値をそれぞれのサイズの生のデータとして出力する。 「式」を複数指定した場合、左から順に出力する。 「式」の値がそれぞれのサイズで表現できる範囲を超えた場合、エラーとなる。 文字列の出力も可能である。出力サイズはそれぞれのサイズに切り上げられ、足りない部分は0で埋められる。 出力するサイズは以下の通りである。
|
ここでは標準の解釈を述べる。アーキテクチャによっては特殊な解釈をする場合がある。
以下の形式の整数リテラルが使用可能である。大文字・小文字は区別しない。
12345
: 10進数0x123abc
: 16進数0b10101
: 2進数0o12345
: 8進数
文字列は ""
で囲んで表現する。
UTF-8でエンコードされる。
文字列に対する演算は未定義のため、エラーとなる。
以下のエスケープシーケンスが使用可能である。
\\
: \
\"
: "
\'
: '
\r
: CR (\x0d
)\n
: LF (\x0a
)\t
: タブ (\x09
)\0
: ナル (\x00
)\x<16進数2桁>
/ \X<16進数2桁>
: 指定した16進数のバイト
文字(対応する文字コードの整数)は ''
で囲んで表現する。
文字列と同様のエスケープシーケンスが使用可能である。
複数文字や0文字の場合、エラーとなる。
整数リテラル・文字列・文字・演算子・空白以外のものは、識別子とみなす。
識別子の大文字・小文字は区別する。
識別子がラベルとして定義されている場合、対応する位置(ラベル位置)を表す整数となる。
識別子がdefine
やredefine
で定義されている場合、定義された値となる。
以下の演算子が使用可能である。
優先順位は、以下の表で上のものほど高い。
同じ優先順位の二項演算子は、左から右に評価する。
項数 | 演算子 | 説明 |
---|---|---|
単項 | () [] {} |
() は、優先度の低い演算子を先に計算するために用いる。[] および {} の計算は未定義であり、使用するとエラーになる。
|
二項 | () [] {} |
A[B] のような形で用いる。計算は未定義であり、使用するとエラーになる。 |
単項 | ! ~ + - |
|
二項 | * / % |
|
二項 | + - |
|
二項 | << >> |
|
二項 | & |
ビットANDを行う。 |
二項 | | ^ |
|
二項 | < > <= >= |
オペランドの大小関係が以下の条件を満たせば1、満たさなければ0とする。
|
二項 | == != |
オペランドの関係が以下の条件を満たせば1、満たさなければ0とする。
|
二項 | && |
まず左のオペランドを評価する。 左のオペランドが0ならば、右のオペランドは評価せずに0とする。 左のオペランドが0以外ならば、右のオペランドを評価し、0以外なら1、0なら0とする。 |
二項 | || |
まず左のオペランドを評価する。 左のオペランドが0以外ならば、右のオペランドは評価せずに1とする。 左のオペランドが0ならば、右のオペランドを評価し、0以外なら1、0なら0とする。 |
三項 | ?: |
A ? B : C の形で用いる。まず A を評価する。0以外なら B を、0ならC を評価し、その値とする。A の評価結果が0以外の時C は評価せず、0の時B は評価しない。A ? B : C ? D : E は A ? B : (C ? D : E) と解釈する。
|
二項 | , |
計算は未定義であり、使用するとエラーになる。 |