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

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

Web版自作x86エミュレータ公開

Web版x86エミュレータをアップロードして公開することにした(http://web-d-emu.appspot.com/)。一部の機能でCanvas使ってるのでFirefoxChromeで動作確認、Chrome推奨。現在の所、アセンブラ機能がないので、テキストエリアに機械語を16進数で入れて、実行ボタンを押すと開始。停止で実行中のプログラムを止める。ステップ実行は押す度に1命令だけ進める。レジスタボタンやディスプレイボタンは1度押すとポップアップウインドウで表示され、もう一度ボタンを押すと非表示になる。レジスタウインドウは全ての内容を非表示にした場合のみウインドウが消える。


動作は16bitモードで開始して、機械語はメモリの0x7C00番地へコピーされる。実行後EIPは0x7C00になる。頑張れば32bitモードにできる。対応してる命令はオペコード単位で200はあるはずだが、非対応の命令の方が多い。四則演算やmov、push、popあたりはできる。シフトやRotateは対応してたりしてなかったり。そしてバグが多いと予想される。


以下にサンプルを載せておく。ディスプレイウインドウを表示させて、以下のコードをテキストエリアに入れて実行すれば、動いてる様子が見れる
30e4b003cd10b012cd1030c0b40cba0000040131d231c9cd1081c1010081f9800275f481c2010081fae00175e83c0f75e0e9fdff


アセンブラ機能入れたいなー