p.112
Hackアセンブラ
これが、Parser
、Code
の両モジュールの各種メソッドを使ってアセンブルプロセス全体を司るメインプログラムです。ここで説明するベーシック版アセンブラは、ソースアセンブリコードにシンボル参照が一切含まれていないことを前提とします。つまり、(i) @xxx
タイプのどの命令も、定数xxx
は10進数値であってシンボルではなく、(ii)入力ファイルにはラベル命令((xxx)
という形式の命令)が含まれていない、ということです。
ベーシック版アセンブラプログラムの動作は次のとおりです。まずコマンドライン引数から入力ソースファイルの名前(たとえばProg
など)を受け取ります。入力ファイルProg
.asmを構文解析する手段としてParser
クラスを実体化し、変換されたバイナリ命令を書き込むための出力ファイルProg
.hackを作成します。次に、入力ファイルに含まれているすべての行(アセンブリ命令)を順番に読み取って以下のように処理します。
C命令の場合は、Parser
、Code
の両モジュールの各種メソッドを使って、命令をフィールドに構文解析し、さらにフィールドをバイナリコードに変換します。次に、変換されたバイナリコードを、0
と1
の各文字から成る16文字の文字列にアセンブル(連結)し、その文字列を出力ファイル.hackファイルの次の行として書き出します。
@xxx
という形式のA命令の場合はxxx
をバイナリ表現に変換し、0
と1
の各文字から成る16文字の文字列を作成し、それを出力ファイル.hackファイルの次の行として書き出します。