マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

x86エミュレータ

エミュレータ更新!

github上のx86エミュレータ更新した。いろいろ変わり過ぎてて何が変わったのかわからない。2年も放置してたからなぁ。https://github.com/d-kami/demu

うん?ちょっと進んだ?

kolibri.imgでディスク読み込むところで前回は何も出力せずに無限ループに陥っていたが、何かディスク関係のBIOS Function Callが来るようになった。まだ実装が終わってない部分だったので、それをやったら先に進めるかもしれない。某Linuxは変化ないけど

何かブラウザで動くエミュレータが出回ってるようで

先越されまくりです。ちょっと焦ってます(・_・;)。ついでにOpenRISC 1000を知ったので、アーキテクチャマニュアルを落としてみました。興味が沸いたらエミュレータ作ってみたいな。H8エミュレータも一時期作ってたけど思ったより変態だったため、挫折した…

最初から作り直す?

過去の勘違いが原因でバグになってることが多いので、今の知識で作り直せばバグが少なくなる!といいなぁ、と思ってところ。でも作り直してもバグだらけの予感しかしない。そもそも、作り直しても、今の規模まで到達しないと思われる。2、3年前とやる気が全…

今日もログを読み続ける作業だった

ログ解析のd-kamiと呼ばれそうなぐらいログを読み続けている。自分で出力したやつだけど。条件分岐周りが怪しいんだけど、どの命令でフラグが誤ったかわからん。単体テストしようにも正しい結果がわからないときがある。ちゃんと、マニュアル読めって話だね…

このエミュレータの影響

思わぬところで影響を与えていたようだ。C#版x86エミュレータを楽しみにしている。私のC#版x86エミュレータは不完全すぎて駄目すぎてゴミになってしまったので、頑張ってほしい

根気!

デバッグ用のログがでかくなってきて、処理を追うのが大変になってきたのは、今に始まったことではない。が、だんだん辛くなってきた。ここで折れたら負けだと思うので、更にデバッグを続けなくてはならない。実行命令数も随分と増えたもので、最初の頃には…

気付いたらアップロードされていました

第八回 カーネル/VM探検隊での私の発表です。諦めたという話ですね。はい

Now booting the kernelから進まない

あと、どれくらいでLinuxが動いてくれるかは知らないが、現状止まっている。というか無限ループに陥っている。実行した命令のダンプがどんどんでかくなっていく。今が頑張りどころか!

開発再開!

↓のTweetが100fav超えたようなのでエミュレータ開発再開します! https://twitter.com/d_kami/status/364029615322300416こっそりこんな修正しておきました。修正なのかどうかはわからんけど

SlideShareにアップしました

『Javaで作る超簡易x86エミュレータ』をSlideShareにアップしました! http://www.slideshare.net/d-kami/java-24934130

もう少しでLinux起動しそうだったんだな

全然気付かなかったが、上の方のメッセージが上書きされていて、Now booting the kernelと表示されていた。もう少しでブートしそうだったんだな。

カーネル/VM探検隊でやってなかったデモ

そういえばこれやってなかった

さてどうしたものか

ここまでできているが、もう開発は放棄するかどうか。結構迷いどころ。ちょっとずれてるけどね

そろそろやめどきか?

3年間(3年前のエントリ)に及ぶx86エミュレータ開発も止まってきたので、そろそろやめどきではないだろうか?と思うようになってきた。先生、CPUの気持ちがわかりません!それで、今後どうするか考えていたが、しばらくはシェーダーやってると思うので、ブロ…

壊れた

画面がめちゃくちゃに!

CP437

うん、文字コードの問題だった

TextVRAMでミス

TextVRAMのことをわかっていなかったようだ。上が自作エミュレータの結果で下がbochsの結果。何をすればいいのかわからない...

find . -name "*.java" | xargs wc -lしてみた

./vm3/vm/client/〜がエミュレータのコード。それ以外は何かの目的で作られたクラス $ find . -name "*.java" | xargs wc -l 32 ./vm3/Compare.java 33 ./vm3/Convert.java 46 ./vm3/OSDataWriter.java 15 ./vm3/Resize.java 173 ./vm3/vm/client/device/FDC…

ちょっと進んで止まる

FreeDOSを読み込ませたところ

987768命令目まで一致

FreeDOSのエミュレート経過をbochsと比べたところ987768命令まで同じ命令を実行してることがわかった。しかし、そのあと自作エミュレータの方は画面が変化しないまま無限ループに入ってしまうようだ。何が原因なんだか...

ModR/Mで痛恨のミス?

ModR/Mのメモリアドレスをしているするとき、データセグメントを指定していたが、使うレジスタによって、使うセグメントレジスタは違うっぽい?EBPやESPはSSレジスタを使うのかな?

Plan9は32bitモードに行っているが

行っているが...エラーで先に進まん。Bochs先生のお世話になります

実行命令数10000000命令突破

FreeDOSの命令実行数が10000000命令突破したようだ。まだまだ先は長いが、頑張った気がする

そしてエラーへ

Less than 2MB of memory System haltedだそうだ。Small Kernel(Linux)にはメモリは32MB与えてるし、BIOS Function Callでもちゃんと2MB以上の値を返すようにしてるんだけどなぁ。別の方法でメモリサイズを取得しているのか、それとも条件分岐にバグがあるの…

Small Kernel 32bitモードへ?

CR0が1になっていて、セグメントレジスタが以下の画像になっていた。気づいたら32bitモードに投入していたらしい。うん、順調?

"そのうち挫折するだろうから挫折するまで続けたい"

とx86エミュレータ最初のエントリに書いてあった。自分では「何回挫折してるんだよ!」という感じだが、まだ続けるぞ!まぁ、そんな長くは続かないかもしれないが。証拠のエントリ↓ http://d.hatena.ne.jp/d-kami/20100328/1269768094

bochsとの答え合わせ

任天堂が作ったES Operating Systemで自作エミュレータの結果とbochsの結果で答え合わせをした。bochsの実行結果は55713命令までしか出力してなかったので、最後まで実行命令が一致してしまったようだ。もっと実行命令数を増やさないと駄目だな。

ファイル読み込み

以前のminivm計画では、一度バイナリをサーバにアップロードしようと思っていた。しかしFile APIの存在でローカルだけで完結しそうな気がしてきた。問題なのはFile APIでバイナリを読み込めるかどうか。ちょっと調べてみよう。もし無理なら16進ダンプを読み…

es-operating-system起動

任天堂が作ったというesというOSをエミュレータに読み込ませた。今まではBIOSのエミュレートに失敗してしまって、ブートローダでこけてたけど、なんとかOS本体にたどり着いたっぽい?