Hackアセンブラ / 非公式訳

p.112

Hackアセンブラ

これが、ParserCodeの両モジュールの各種メソッドを使ってアセンブルプロセス全体を司るメインプログラムです。ここで説明するベーシック版アセンブラは、ソースアセンブリコードにシンボル参照が一切含まれていないことを前提とします。つまり、(i) @xxxタイプのどの命令も、定数xxxは10進数値であってシンボルではなく、(ii)入力ファイルにはラベル命令((xxx)という形式の命令)が含まれていない、ということです。

ベーシック版アセンブラプログラムの動作は次のとおりです。まずコマンドライン引数から入力ソースファイルの名前(たとえばProgなど)を受け取ります。入力ファイルProg.asmを構文解析する手段としてParserクラスを実体化し、変換されたバイナリ命令を書き込むための出力ファイルProg.hackを作成します。次に、入力ファイルに含まれているすべての行(アセンブリ命令)を順番に読み取って以下のように処理します。

C命令の場合は、ParserCodeの両モジュールの各種メソッドを使って、命令をフィールドに構文解析し、さらにフィールドをバイナリコードに変換します。次に、変換されたバイナリコードを、01の各文字から成る16文字の文字列にアセンブル(連結)し、その文字列を出力ファイル.hackファイルの次の行として書き出します。

@xxxという形式のA命令の場合はxxxをバイナリ表現に変換し、01の各文字から成る16文字の文字列を作成し、それを出力ファイル.hackファイルの次の行として書き出します。

このモジュールのAPIは本書には示しませんので是非自由に実装してください。