blink-d
ブラウザでC++なんて夢がありました。未完成の状態になるけど、まぁ、このままだと消えるしかないので
ブラウザ上で動くエミュレータ用ライブラリで標準出力的な何かが消えてしまったので、復活させた
と思う方もいらっしゃるとおもうので、たまにはエミュレータのエントリを書きます。えぇ、x86エミュレータです。今、作ってるblink-dというハイパーバイザ的ななんとかバイザです多分。blink-dにはスーパーバイザがいないのでハイパーバイザといういい方が正…
GWTのバージョン上げたら微妙にblink-dの挙動が変わった気がするが、気のせいだ(おい
何か考えないとなー。ようやく余裕がでてきて、エミュレータ(?)にも力が入るようになった気がする。余裕大事
そのうち公開するであろうblink-dのサンプルコード。とりあえず、ラベル表示編。ウインドウとラベル作って、ウインドウにラベルを追加しているだけである #include <gui.h> int main(){ Window window; window.setText("Hello World!"); Label label; label.setText</gui.h>…
C++からHTMLのボタンのサイズを変更しましょってことで、何やらやってました
blink-dのここまで来るのもかなり大変な道のりで、x86エミュレータの開発を始めたころに比べるとかなり遠い場所に来た気がするが、これからも大変な道を進むことになり、泣きそうである。x86の部分はほぼ修正せずに来ているのが嬉しいことだが、JavaScript側…
blink-dのC++側のコードです...GUIに関するgui.cppの部分だけ載せています。なぜここに__cxa_pure_virtual()があるのか?とか疑問に思わずに見ることを推奨します #include "gui.h" extern "C" int gui(int, int, int, int, int = 0, int = 0); extern "C" i…
WebGLのCanvasの下に画像を表示している図。VerticalPanelで縦に並べてHorizontalPanelで横に並べることができる
作曲だの3Dだので進んでなかったblink-dを久しぶりに進めようと思っている。浮動小数点数が使えないが、これを使えるようにするかどうか迷い中。floatを使ったソースコードをclangに与えたらSIMDを使ったバイナリが出力された。対応するなら頑張らないと...
何度かスクリーンショットを上げてるように、blink-dはWebGLに対応している。そして今までライブラリが低レイヤーすぎてアレだったが ついに! ラッパーライブラリができてちょっとだけ高級になったんじゃよ
画像も表示できるようになりました!今はネット上のURL指定ですが、HTML5のFile APIでローカルもいけるようになるはず!
まずテキストボックスを作れるようにした。あと、イベントが不便な関係で、WidgetにUserDataを持てるように修正した。これは1つだけ32bitな値を渡せる形だ。これを使えば、イベントでのコールバックで2つ以上のデータを持たせられるはず。スクリーンショット…
まずC++のラムダ式に対応した。これはサーバーサイドの変更だが、コンパイラオプションを変更した。また、buttonなどのクリックイベントから無名関数へのコールバックができるようになった。ちょっと強引な感じもするが... そしてGUIの部品というかレイアウ…
TwitterでMiniVMとかblink-dとかいってるけど一体何なんだ?って話なのかもしれないので、少し説明しておく。タイトルの通り、ブラウザで動くx86エミュレータではあるのだが、実はエミュレートしてない。というかx86ですらない部分がある。それは32bitリアル…
当然のことかと思ってたら当然では無かったらしい。とりあえず、Stringをでっちあげて、日本語も対応!そういや標準出力用のライブラリが今無いのでなんとかせねば
"blink-dにC++の標準ライブラリをどこまで導入するかという悩みがあったが全く導入しないことになりそう。コンパイル後のバイナリがネットワーク流れるし、でかくなったバイナリのエミュレートで遅くなりそうだからというそんな感じの流れで"とFaceBookに書…
Twitterの魔人こと、某@fadis_の陰謀によりblink-dにSTLが導入されるかもしれないという危険な事態に陥った。下手したらstringとかが使えるようになってしまうのかもしれない。ヤバい、危険すぎる!
今までblink-dで作ったウインドウは閉じることができなかった。しかし!ついに!ようやく!閉じるボタンが!追加!されました!
guiという関数だけで成り立っていた今までと違い、DialogBoxとかLabelというクラスを作り、ちょっとだけレイヤが高くなった...気がする
ついにnewができるようになってしまった。delete?無理。だから何?って言われそうだけど、メモリ管理するはずのOSがないからnewできないんですよ!ってことでエミュレータ(?)側にメモリ管理させて、あとはハイパバイザコールで仕留めたわけです。はい
minivmでのC++はいろいろ死んでるんですよね。うん...まぁ、使えますよ?ってぐらいです。はい。ということでそのうち誰かがテストしてくれるはず
漢は黙ってブラウザでプログラミングするもんですよ!(嘘。というわけで、ファイル追加したりするわけです。そろそろハイパーバイザコール丸出しのライブラリに飽きてきたので、使いやすさを考えたライブラリを用意したい。ハイパーバイザコールと呼んでいる…
必要かどうかは知らないけどエディタだけだと寂しいでしょ?となんとなく思っただけです...
UIを微妙に変更、ちょっとずつ豪華になっていく...といいなぁ。どこまで作り込むか...
相変わらず浮動小数点数を扱えないが、頑張って固定小数点数で頑張ろう!しかし、実行速度の遅いエミュレータからWebGLってヤバそう
だんだんカオスになるシステムコール的な存在から目を背けつつ、機能拡張した。Canvasに対応して四角形を描画しまくってるよー 以下怪しいプログラム。ようはC言語から呼ぶ魔法 global stdout global stdin global gui global fileapi %macro blink 1 mov ea…
まだレイヤーの低い状態だが、だんだん使いやすい関数になっていく予定だよ!とりあえずWebGLで三角形の描画やー。エミュレータの関係で絶対遅いんだけど!