axx2(axxの次世代)構想。パターンファイル(プロセッサ記述ファイル)の解説
Feature not available now.
・パターンファイルをもっと記述的なメタ言語にすると、可読性が高い、評価の順番に依存しなくなる、制御構文が書きやすい、プロセッサ記述ファイルのデバッグがやりやすい。けれども、パターンデータのほうが直観的に記述できる。
・メタ言語を更に一般化して、パターンファイルに記述的なメタ言語を使い、binary_listに文字列リテラルと文字列演算+数値演算をもたせ、制御構文も持たせると、中間言語を生成したり、アセンブリ言語同士のコンバータができる。その時、binary_listは、object_listに、パターンファイルはprocessor_specification_fileに名前を変える。メタ言語は、パターンデータから、複数行に亘る記述言語になる。実現可能である。axxを元にして誰かが作ってる最中らしい。
・パターンファイルでも、a='MOV b,c'として、文字変数(今は小文字のアルファベットだが、普通に言うシンボルに拡張すれば)に命令(文字列)をもたせて、binary_listに記述するようにすると、スマートにマクロが書けるようになる。
・ループ構造を許すと、axx.py内部で処理するとき、無限ループになったら、デバッグが難しくなるが、パターンファイルだけの評価をつけると、デバッグも簡易になり、ループ構造、分岐構造も許される。チューリング完全にすれば完全に任意のプロセッサ・アーキテクチャが処理できる。LISPマシンも原理的に可能。
・自己参照のチェックが必要。expand(a)で、展開。例えば、a='b ; c' b='MOV AX,d' c='JMPC e'だとすれば、'MOV AX,d ; JMPC e'に。expression(a)で、式の評価、label:で、ラベル定義。プロセッサ記述ファイルと、アセンブリファイルでは、ラベルを別にしておくと、同じラベルが両方にあっても気にしなくてすむ。
・EPICのようなメタ処理は変数の列挙で解決する。記述的なメタ言語にするとなると、ドラスティックな書き換えが必要。アセンブラのプロセッサ特性記述ファイルが複雑になると、General Disassemblerとのファイルの互換性を取るのが難しくなる。