Concurrent Clean : この次の予定 : ABCマシン(9)

Clean入門を完了したので、以前から懸案だったJVMでCleanを動かすという目標に取り掛かりたいと思っています。
おそらく、技術的にはそれほど困難はないと思っているのですが、知識的な困難があって、「ABCコード→Jasminコード」の変換を行いたいのですが、肝心のABCコードの詳細な仕様が分からないのです。これはもう、本当にドキュメントがないみたいで、先にあげた本(下図)に概略が載っているものの、ここの情報だけでは全然足りていないので、CodeGeneratorのソースコードから解読していくしかなさそうな感じです。
Functional Programming and Parallel Graph Rewriting (International Computer Science Series)
[id:lethevert:20051223:p1]
最初は、ABCコードをCleanコードで表現した情報があったので、シンプルなインタプリタをCleanで実装してから、Jasminコード生成器を作ろうと思っていたのですが、どちらにしろCodeGeneratorを解析しなければいけないなら、むしろ、既存のCodeGeneratorのソースを改変して、Jasminコードを生成させる方が近いかもしれないです。
ひらメソッドでも試してみようかな。

      • -

ランタイムのコアが、istartup.sというアセンブリコードなのだけれど、もう、本当にアセンブリしかないので・・・。このistartup.sには、ABC命令の実装や、VMの初期化、ガーベジコレクションなどが入っていて、CodeGeneratorとあわせて理解しないと、ABCコードの翻訳ができないのだが。
もう一つのランタイムのコアは、_system.abcというABCコードで、こちらは問題ないと思う。
あと、CodeGeneratorは、オプションでアセンブリを吐くので、これは、そちらから読んでいけばよさそう。