[PREV]
[NEXT]
[INDEX]
【6】 アセンブラ仕様 (J3DASM ver 1. 48)
j3w が直接実行する「プログラム」はテキストファイルに書かれた命令 (16進数) の羅列
(j3d ファイル)ですが,その j3d ファイルを作成するために j3dasm というアセンブラを用意
しています.
アセンブラというと難解なものとあきらめてしまう人もいるかもしれませんが,20年前は個人
で使う普通の言語でした.
基本的にアセンブラとは,CPUが直接実行できる命令(機械語,マシン語ともいう)を人間が
覚えやすいような名前(ニーモニック)でプログラムできるように翻訳するツールです.
したがって,アセンブラとはニーモニックを機械語に 1対1 で変換するプログラムのことです
(RISC CPUのアセンブラではそうとの限らないようですが).
CPUが直接実行可能な命令は非常に単純なものが多く,その単純な命令を組み合わせて複雑な
プログラムを組み上げて行きます. 微積分も実際の数値計算は小学生の知っている算数で可能
なように,非常に複雑に思える処理も,ある瞬間にCPUが実行している命令は非常に単純な仕事
をしているだけです.
さて,j3w 用のアセンブラである j3dasm は,単純な 2パス のアセンブラでマクロ機能は持っ
ていません.文法も HTMLより簡単です. 実際の使用例は
J3Wプログラミング入門を読んでみてください.
- ニーモニック(命令)とレジスタ名は必ず英大文字で表記します.
- 行は ; か物理行末まで(最大255文字/行)です.
; 以後, 物理行末まで読み飛ばします. (コメント)
- ラベルはコロンで終わる文字列( LABEL: )で最大31文字
- ラベル名,定数名の英文字の大文字, 小文字は区別します.
- 数値は 0-9 で始まれば十進数, 0xで始まれば16進数を表します.
- 文字定数は 'A' のようにシングルクォートで囲みます.
- 文字列は "String" のようにダブルクォートで囲みます.
全角文字も可能です.
- # で終わる数値はデータメモリアドレスを示します.
- 行頭から(空白,タブは入れないこと)
%インクルードファイル名%
とするとファイル名のファイルがその位置でインクルード(挿入)されます.
パスが含まれない場合はソースファイルのパスのファイルが使用されます.
8レベルまでネスト可能です. xxx.j3sと別のディレクトリのファイルを指
定する場合は以下の形式が可能です.
%. . /lib/library.j3i%
- 同じ名前のラベルが複数宣言されている場合はエラーにならず,参照し
た場合には行番号が若いラベルが使用されます.
- DEFINE擬似命令を使用してニーモニック(命令の名前)とラベル名以外の
31文字を使用した定数名を定義できます.
定数名には次の制限があります.
- シンボルにラベルを定義することはできない. 名前の最後にはコロン
を付けない.
- オペコードと同じ名前を使用しない.
- シンボルは使用する前(ソースコード中の位置)に必ず定義する必要が
ある.
- シンボルの再定義は不可.
以下の例は有効な定数宣言です.
DEFINE DataMenory 1234#
DEFINE Constant 123
DEFINE HexConst 0x100
DEFINE Character 'A'
アセンブラに不慣れな方は
J3Wプログラミング入門 またはサンプルプログラムを参考に
して下さい.
[PREV]
[NEXT]
[INDEX]
ご意見・ご感想は,水谷 純 <mizutani.jun@nifty.ne.jp>まで.