この広告は、90日以上更新していないブログに表示しています。
最近作ってたオモチャがだいたいまとまってきました。
第12回 kernel/vm 勉強会で発表した時のスライド:
http://shinh.skr.jp/slide/elvm/000.html
これは何かというと、前作ったbflisp を改良したり整理したりしたもので、 C 言語をシンプルな中間言語 (EIR) に変換する改造 8cc と、その中間言語をBrainfuck をはじめとした他言語に変換するバックエンドから成り立っています。 bflisp との差分は、Brainfuck 以外のバックエンドを追加しやすくしたり、バックエンドを C で書いて、完全にBrainfuck だけで 8cc.bf を再現することができるようにしたり、という感じです。
特に興味深いであろうバックエンドとしては、Brainfuck, Unlambda (id:irori さん作), Piet, C-INTERCAL, Befunge, Whitespace などがあります。例えばLisp を Piet で動かしたりもできるようになりました。lisp.png をgimp で開いてスクリーンショットを撮ったこの画像なんかは結構お気にいりです。

JavaScript に変換することもできるので、デモサイトは ELVM を使って作った JS で作られています。
http://shinh.skr.jp/elvm/8cc.js.html
スライドにも書きましたが、「チューリング完全な言語互いに等価だからうんぬん…」というような、理論ではそうなんだけど…というようなことが実際確認されるのを見るのはなかなか楽しかったです。コンパイラいじり、 esolangs での計算プリミティブ作成パズル、最小限の libc 作り、など好きなトピックがたくさんあるという意味でも楽しくて良かったです。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。