x86エミュレータ
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で三角形の描画やー。エミュレータの関係で絶対遅いんだけど!
システムコールそのままなGUI関数を整備中。ここが終わったらレイヤを高めていく
MiniVMでC言語からHTMLの要素を弄れるように修正を加えた。まだライブラリができてないのでシステムコールっぽい関数になっている
以前は文字列参照がうまくいってなかった。アドレスの取得は上手くいってたのに、取得後に謎のミスがあり、文字列を取得できていなかった。比較的、早い段階で作った命令のバグであり、ずっと修正されてなかったという...なんんてこった
以前はわけあってループができなかったが何とか修正してループ可能になった。だが文字列はまだなんだ。残念
C言語のコンパイルをサーバに丸投げしてバイナリをブラウザで実行するという誰得プログラム。標準ライブラリを使えないので何となく文字出力関数用意した。浮動小数点数はまだ使えないが、そのうち使えるようになるとも思えない。とりあえず頑張ろう
ちゃくちゃくと進んでいるけど、まだ遠いかな...
サーバ側の整備をした。基本的にクライアントサイド(Webブラウザ)で動くけどサーバも頑張るようにした。開発環境と本番環境に差があるので必死に差を吸収してるところ。今までのところは順調.。.だと思う
最近モンスターハンター4Gのエントリしか書いていない気がするけど、x86も進んでるんです。x86的には進んでないけど。何をしているかと言うと以前公開したminivmをパワーアップさせ使いやすくしています。以前はメモリの特定のアドレスに文字コード入れたら…
PEヘッダを解析したことによりAPIフックの方法が分かった気がする。今まで興味が無かったが少し興味が出てきた。そして、悪いことを思いついたd-kamiだけど多分失敗する。ring0で何かしたい年頃だから仕方が無いね!
問題はいろいろあるし、目標には届いていないが進んでいる。スクリーンショットはexeから参照されるDLLの1つを表示しているところ
明日あたりには、プログラム本体に辿り着き、自作x86エミュレータで動かしているはず...多分。Win32APIについても調べないとな
今更ではあるが、PEヘッダを解析してみようかと思っている。そしてどこまで実行できるかどうか...まぁ、駄目でもいいからやってみたい。さぁ、頑張ろう!
前回、GDTを見に行くところでエラーになったんだけど、理由がLGDT命令のアドレス計算をミスしていただけだった。何度もやらかしてるエラーだったようだ。悲しい。そして次の段階へ進み、またバグに遭遇。命令実行回数がどんどん増えていく。
MenuetOSのエミュレートで画面がおかしくなっていたが、ほとんど修正できた。原因はバックスペースと改行にあったようだ。うまく処理できてなかったらしい。しかし、命令実行数が今までのOS(というよりブートローダ)よりも桁違いにでかく、66608548命令実行…
前回の画面崩れを少し修正した。原因はバックスペースを表示しようとしていたことだった。バックスペースが来たらカーソルの前の文字を消すように修正した。これでだいぶましになった感じがするが、まだ変なところがあるのでそこも修正したい。あとGDTが見つ…
x86エミュレータのJMP命令を1つ間違えていてトンデモナイところに飛ばされていた。ModRMでのミスである。多分初期の頃に作ったのが残ってたんだろうなぁって感じがする。直したところでバグ地獄は続くんだけどな!
Menuetをエミュレートしているが何か画面が壊れている。でも進んでるっぽい。どこまで進むかな?最終的にはLinuxを動かしたいが、挫折して終わりそう。
今になってx86エミュレータの新しいデバッグ方法が思いついた。ただ、うまくいくかはわからないので、家に帰ったらにしよう。今となってはログが凄まじい量になるし、無限ループに入られると厄介なのだが...なんとかしよう。でも、x86エミュレータの開発にど…
今までKolibriOSのブートローダの画面が崩れていたが、画面サイズの設定で失敗していたようだ。エミュレータのINT 0x15にバグがあって、何かおかしかった模様。現在はAXが0x4F01のときのINT 0x10で解像度を返すわけだけど、何を返せばいいのか分からず悩んで…