Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなコンパイラ+仮想マシンの開発日誌です。LLVMでJITもします。https://github.com/ab25cqにて開発しています。

LLVM化進んでます

VMの命令を上から順番にLLVMに移植しています。

intからbyteへのキャストなどアラインメントが小さくなるキャストは意味がないとやっと気づいたので消去しました。

少し速くなったかもしれません。コンピュータに対する無知が知れてしまい恥ずかしい思いです。

まだまだコンピュータのことが分かってませんね。

逆にbyteからintへのキャストはスタックに確保するサイズによってはSegment faultが起こったり正しい値が得られないことは分かってましたけどね。

後リトルエンディアンとビッグエンディアンも詳しくは理解していません。値に対するメモリの上位バイトと下位バイトの格納の順番が違うとは分かってますがあまり意識して書いてません。もしかしたらClover2はINTELのプロセッサ以外では動かないかもしれません。INTELは確かリトルエンディアンですね。ビッグエンディアンでは動かないかもしれません。ARMはビッグエンディアンでしたっけ。まあ、googleで調べてみますが。後、Clover2は64bitのCPUでしか動きません。確かポインタの値が64bitだということを仮定していて、そこさえ修正すれば32bitのCPUでも動かせるとは思いますが、あまり古いCPUで動かしてもらえることは想定していません。今風のubuntuFedoraで動かしてください。Debian, CentOSでもいいですが。まあ、遊びのコンパイラなので、新し目のOSでVPSでも自宅の自作PCでもなんでも良いので気楽に試してもらえれば嬉しいです。