minivm
以前は文字列参照がうまくいってなかった。アドレスの取得は上手くいってたのに、取得後に謎のミスがあり、文字列を取得できていなかった。比較的、早い段階で作った命令のバグであり、ずっと修正されてなかったという...なんんてこった
以前はわけあってループができなかったが何とか修正してループ可能になった。だが文字列はまだなんだ。残念
C言語のコンパイルをサーバに丸投げしてバイナリをブラウザで実行するという誰得プログラム。標準ライブラリを使えないので何となく文字出力関数用意した。浮動小数点数はまだ使えないが、そのうち使えるようになるとも思えない。とりあえず頑張ろう
ちゃくちゃくと進んでいるけど、まだ遠いかな...
サーバ側の整備をした。基本的にクライアントサイド(Webブラウザ)で動くけどサーバも頑張るようにした。開発環境と本番環境に差があるので必死に差を吸収してるところ。今までのところは順調.。.だと思う
最近モンスターハンター4Gのエントリしか書いていない気がするけど、x86も進んでるんです。x86的には進んでないけど。何をしているかと言うと以前公開したminivmをパワーアップさせ使いやすくしています。以前はメモリの特定のアドレスに文字コード入れたら…
一部の人は知っていたようだが、minivmにはText VRAM以外にもVRAMが存在している。というか過去のエントリに書いてあったんだよね。私が忘れていた。それで、VRAM0x200000は始まっていて、4の倍数番地から32bit単位で書き込まないと描画に反映されない。現在…
前回のエントリでminivmを公開したが仕様を書いてなかった。まず、このプログラムはバイナリファイルをドロップエリアにドロップすることで動きだす。バイナリファイルはminivmのメモリの0番地に置かれ、先頭から実行する。実行するのはx86バイナリで、32bit…
まだ文字しか表示できない!レジスタもメモリの内容も表示しない!でも公開してしまうぜ!これは一体何かと言うと、ドロップしたx86なバイナリファイルを実行してしまうというものだ!32bitモードで動いているが、セグメントとかページングは一切動いていな…
minivmをGWTに持っていくには、GWT用のViewを用意しなければならない。以前、自作x86エミュレータをGWTに持っていくためにViewを作っていたが、そのViewがどっかいった。あとディスクI/O関係も別途必要になってくるので、めんどい。でも今はディスクI/Oの部…
GWTでFile APIをどう使うのか調べてみたら、そのためのライブラリが見つかった。http://www.vectomatic.org/libs/lib-gwt-fileにライブラリがあり、そのDropPanelとDataTransferExtなどを使えばOKらしいが、gwt.xmlでのinheritsと、Drag関係やDrop関係のイベ…
以前のminivm計画では、一度バイナリをサーバにアップロードしようと思っていた。しかしFile APIの存在でローカルだけで完結しそうな気がしてきた。問題なのはFile APIでバイナリを読み込めるかどうか。ちょっと調べてみよう。もし無理なら16進ダンプを読み…
メモリアドレス0x200000からグラフィックスの領域とした。4byteごとにRGB値を入れていく。上位1byteは無視して2byte目が赤、3byte目が緑、4byte目が青というようになっている。以下のコードをアセンブルしたものを読み込ませると以下の画像のようになる。 [b…
キーイベント実装例。現在引数は無いが、そのうちキーコードとキーの状態を渡そうかと思っている。以下のコードで何らかのキーが押されたときに、画面にBと表示するようにしている。0x400000に関数のアドレスをセットしておけば、キーが押されたときに登録し…
C言語でプログラム書いて、minivm上で実行できた。以下のソースコードをhello.cとして保存して、下記のようにコマンドをうち、できあがったhello.binを読みこませることで、画面上にAと出力された gcc hello.c -m32 -c -nostdlib -o hello.obj objcopy -I el…
現在、ブラウザで動くMiniVMを作成中で、以下のコードをアセンブルすればCanvasにAと表示されるようにした。C言語でも書けると思う。あとはアップローダでも用意してみようかな [BITS 32] MOV EAX, 0x100000 MOV BYTE [EAX], 'A' loop: JMP loop
今、ブラウザで動くminivmを作っている。PC/AT互換ではなく、独自のシステムを持っている。Cやアセンブラで作ったバイナリを動かすことが目的で、HTML5のCanvas上にCやアセンブリでアクセスできるようにする。VRAMを叩くとCanvasにアクセスする仕組みを作る…