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

Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなインタプリタの開発日誌です。https://github.com/ab25cqにて開発しています

キャスト以外の命令のJIT化がだいぶ進みました

お題のとおりです。明日以降キャスト以外の命令をJIT化してから、大量にあるキャスト命令のJIT化をしたいと思います。 山場だと思っていたOP_INVOKE_VIRTUAL_METHOD, OP_INVOKE_DYNAMIC_METHODなどはCの関数を呼ぶだけで簡単に実装できました。ブロックの呼…

全演算子をJIT化

タイトル通り全演算子をJIT化できました。 ちょっとテストが足りていないので、バグがあるかもしれませんが、多分、大丈夫だと思います。 あとは山ほどあるキャストをJIT化していきます。 見るだけでゲンナリするほど量がありますが、少しずつ進めたいと思い…

JITで演算子の実装を進めました

今回の収穫はキャストの仕方がわかったことですね。 とりあえず、僕のVMにはキャストが山ほどあるので、それが山場だと思っていたので、それがなんとかなりそうだと分かり、ほっとしてます。 あとは道なりに全部の命令をJIT化していきます。 問題は速くなる…

JITで補数の単項演算子を追加

JITで補数の単項演算子を追加しました。 だいたい全体の1/2くらいの進捗ですかね。 ぼちぼち残りの1/2やっていきます。 重要な命令はほとんどできているので、後はキャストやfloat, doubleの演算子辺りが山場ですかね。 大体来月末にはJIT付きのVMでversion …

LLVM化は続く

とりあえず、byte,ubyte,short,ushort,int,uint,long,ulongの2項演算子は出来ました。全体の1/4か1/3くらいの進捗だと思います。 早ければ今月末か来月末には終えられると思います。 その後は拡張ライブラリを書くためにSystemクラスにLoadLibrary?でした…

LLVM化進んでます

VMの命令を上から順番にLLVMに移植しています。 intからbyteへのキャストなどアラインメントが小さくなるキャストは意味がないとやっと気づいたので消去しました。 少し速くなったかもしれません。コンピュータに対する無知が知れてしまい恥ずかしい思いです…

LLVM化もだいぶ慣れてきました。

TRY文に対応しました。とりあえず、制御構文は対応できました。 あとは順次VMにある命令の上から一つづつLLVMに対応してます。 夏の終わり頃には終わるのではと言ってましたが、もしかしたら、春の終わりにはLLVMでのJITに対応できるかもしれません。 LLVM化…

JITで制御構文全部に対応

とりあえず、tryも動いています。tryがネスト出来ない問題は放置してますが。for, while, ifは多分大丈夫です。まだテストが足りない気がしますが。 まあ、ぼちぼちデバッグやらテストやら、やっていきます。 とりあえずは対応できたということで。 次は演算…

JITでfor文のテストが動きました

とりあえず、for文だけテストしました。最初動かなかったのですが、修正しました。tryとかもかなり動かないっぽいですけど、明日以降修正します。while文とif文は多分大丈夫だと思います。

JITでtry文、for文、while文など制御構文に対応

とりあえずは書きました。テストやデバッグはまだです。try文は動くか自信がありません。if文は動いているっぽいですがelifなどは動いているか謎です。明日以降テストとデバッグをする予定です。すんなり動けば良いのですが。ただ、try文はかなりいい加減な…

JITでif文やwhile文に対応

とりあえずは動いてます。まだテストは不十分です。一応githubにはアップロードしておきました。break文とtry文がまだです。 それが終われば、一応制御構文はできあがります。 まあ、まだまだ道のりは長いです。ただ、一年間の時間をかけるつもりでしたが、…

Clover2の開発日記開始

はじめまして。Clover2という、コンピュータ言語を作っている湊(みなと)と申します。この度、はてなブログに開発日記を書こうと思ってます。いつまで続くか、分かりませんが、頑張って書いていこうと思います。 Clover2は以下のURLにあります。 github.com …