コードジェネレータ
本稿でのコードジェネレータの定義について
「コードジェネレータ」と言われて、「コードをジェネレータ」って、「もしかして寝れた」、の言い間違いだろうかと、極めて奇妙な考えをしている人もいるかもしれませんが(実はこの言葉を初めて聞いた時の自分が考えたことです……)、ここでは、コードジェネレータを「プログラミング言語のコードをアセンブラ言語(MASM)に変換するプログラムを書く事、またそのプログラム」と定義します。
コードジェネレータの実装の流れ
コードジェネレータの実装は、非常に重要で、本稿の要となる作業です。実装の流れは、以下の通りとなります。
- 実装する機能の掲示
- アセンブリでの機能の実装、アセンブルでの安全確認
- コンパイラからのアセンブリ出力のアルゴリズムの確認
- コンパイラへのコードの記入
- 試しにコンパイル(失敗したらそのプロセスからやり直し)
コンパイラ「KMYsofts japanese」
これからこの講座でコードジェネレータを進めていく上で、(ようやく)「KMYsofts japanese」(以下、KJ)の中のファイルを利用します。KJとは、自分が学習用に作成した日本語プログラミング言語コンパイラです。学習用に作成していたとは言え、いろいろな用途に使うことができます。
インストール
インストールファイルは、それぞれ以下の手順で入手します。なお、今回も前回と同様、ユーザー用のファイルは「My Document」フォルダの直下に「samples\codezine\vefbl」フォルダを作成し、そこを使います(My Documentフォルダが「C:\Documents and Settings\ユーザー名\My Document」のときは、「C:\Documents and Settings\ユーザー名\My Document\samples\codezine\vefbl」となる)。
- MASMのダウンロードとインストール
- KJパッケージのダウンロード
- ファイルの移動
- 「bin\iolib.inc」を「C:\masm32\include」フォルダへ移動
- 「bin\iolib.lib」を「C:\masm32\lib」フォルダへ移動
- 以下のファイルを、前回作成したvefblフォルダ(「ユーザーのマイドキュメント\samples\codezine\vefbl」)に移動する
- 「bin\astest.exe」
- 「bin\iolib.dll」
- 「bin\makejapanese.bat」
- 「bin\makewinjapanese.bat」
- 「vsvars32.bat」
- 不要になったKJのパッケージを削除する
上記の手順を踏んだら、vefblフォルダのファイル構成は次のようになります。このうち「plug-insフォルダ」「build.exe」「build.nako」「tokentest.nako」「dnako.dll」は前回作成したファイルおよびフォルダです。
ユーザーのマイドキュメント
+---samples
+---codezine
+---vefbl
+---build.exe
+---build.nako
+---tokentest.nako
+---dnako.dll
+---astest.exe
+---makejapanese.bat
+---makewinjapanese.bat
+---vsvars32.bat
+---plug-ins
+---nakofile.dll
+---nakostr.dll
すべてのファイルの名前は変更しないでください。また、上記以外のファイルが混ざっている場合は、消したりせずに、そのまま配置しておいてください。
