Movatterモバイル変換


[0]ホーム

URL:


兼雑記

この広告は、90日以上更新していないブログに表示しています。

ELVM Compiler Infrastructure

最近作ってたオモチャがだいたいまとまってきました。

https://github.com/shinh/elvm

第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.pnggimp で開いてスクリーンショットを撮ったこの画像なんかは結構お気にいりです。

JavaScript に変換することもできるので、デモサイトは ELVM を使って作った JS で作られています。

http://shinh.skr.jp/elvm/8cc.js.html

スライドにも書きましたが、「チューリング完全な言語互いに等価だからうんぬん…」というような、理論ではそうなんだけど…というようなことが実際確認されるのを見るのはなかなか楽しかったです。コンパイラいじり、 esolangs での計算プリミティブ作成パズル、最小限の libc 作り、など好きなトピックがたくさんあるという意味でも楽しくて良かったです。

検索
リンク
なにかあれば下記メールアドレスへ。shinichiro.hamaji _at_ gmail.com
shinichiro.h

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp