Movatterモバイル変換


[0]ホーム

URL:


兼雑記

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

bflisp.bf

https://github.com/shinh/bflisp

Lispインタプリタを作りました。Brainfuck で。

だいたいsedlispbeflispmakelisp と似たようなことができます。ちょっとバグあるみたいですが。

Malbolge は実装不能だと思うので、これ以上なくキツいターゲットじゃないかと思っています、のでLisp シリーズはこれで最後でないかと。というか現世的な速度で動くとは思ってなかった。月なみですが、今のパソコン速いですねー。

実現は簡単な 16bit ハーバードアーキの CPU を定義して、魔改造した 8cc でlisp.c をその CPU のアセンブリコンパイル、そのアセンブリなどからBrainfuck を生成、という感じになってます。実行は最適化機能つきの 8bitBrainfuck インプリタでやってます。ある程度最適化しないとまともな速度で動かないと思います。

メモリとかなかなか大変で。Brainfuck で 16bitアドレス空間の load/store を現実的な速度かつコードサイズで実現する方法がなかなか思いつかなかったのですが、今回思いついたから作業始めた、という感じでした。

仮想 16bit CPU を挟んだのは、 @rui314 さんが sedlisp くらいの時から、直接やるんじゃなくて間に中間的な複雑さのなにかを挟んだ方が簡単じゃないの?って言ってて、それを採用した感じです。sed/befunge/make の時は挟まない方が簡単だと今でも思ってますが、Brainfuck 直行はまあムリゲー感しか無いです。

Befunge の時はLLVM bit code からだったのですが、 8cc にしたのはBrainfuck 上で Cコンパイラ自体を動かすという夢があるからです。これ実現するにはまだまだやること多いはず…です。 8cc 大変いじりやすくてありがたかったです。

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

引用をストックしました

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

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

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

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

[8]ページ先頭

©2009-2025 Movatter.jp