MSIL/CIL

なるほど、レジスタは無くてメモリとスタックしか使わない作りなのね。どうりでロードとストアだらけだと思った。 条件判断は条件分岐とラベルを使うのね。-> 今さらこんな事言ってるし。

とりあえず慣れればそれなりのコードからILを吐かせることはできそうだけどやはりプリミティブなプログラミングにならざるを得ないですね。

//CIL版 Hello World
.method static void main()
{
    .entrypoint
    .maxstack 1
    ldstr "Hello world!"
    call void [mscorlib]System.Console::WriteLine(string)
    ret
}

ILのEmitに対してもう一つの動的なプログラムの生成方法としてCodeDomという手もあるんですがCodeDomは書くコードとしては非常に冗長になるので帯に短し襷に長しという感じですね。(それでAbstractILとかいうのが出てきたのかな)

メソッドをオブジェクト間のメッセージの交換であると抽象化しているのであればSmalltalkのdoesNotUnderstand:(だったかな?)みたいなオブジェクト(object)に対するメッセージの捕捉機構が素直に言語レベルで実装されていれば良いのにな。と無い物ねだりに逃げてしまうのでした。