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

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

C#でx86エミュレータ

レジスタビュー

なんとなくレジスタビューをつけてみた。あとステップ実行なんかもできるようにした。BreakPointなんかも付けてみようか

Hello World!

C#版x86エミュレータでHello Worldした。 また mov al, [si] inc si という命令をHello Worldのアセンブリ内に見つけたので lodsb に変えておいた

作り方がよくわからない

Visual C#使ってるけど、まだ慣れてないのでGUIプログラムをどうやって作っていけばいいのかよくわかってない。Java版と微妙に構造が変わったりしてる。大丈夫かな?特に意味はないけどスクリーンショットを載せておく

C#に移植した

Javaで作った全命令をC#版で作り直した。200命令以上あるので苦労した

ModR/Mを乗り越えた

ModR/Mを実装したので、ようやく命令の実装に移れる。Java版を追い抜くぐらいの勢いが必要

ModR/M実装中 その2

Modが0のときでR/Mが0〜7の場合の処理を実装した。Modが1、2のときはMod0のときにModR/Mの後ろにある値を取ってきて足すだけなので楽できる。Modが3のときはR/M番目のレジスタを取ってくるだけなので、ものすごく楽である。頑張ろう!

ModR/M実装中

C#版x86エミュレータでModR/Mを実装しているところ。早く命令実装に移りたい

準備が出来上がりつつある

GDT、IDT、PIC、Pagingなどの準備を行った。あとはModR/M用のクラス郡を作ったら命令実装へと向かう

EFlagsはこんな感じに

とりあえずアクセサメソッドはプロパティで using System; namespace vm.register { public class EFlags { private Int32 eflags; public Int32 Value { set { this.eflags = value; } get { return eflags; } } public bool Carry { set { Int32 carryFlag…

移植中...

就職活動で提出する作品の関係でx86エミュレータをJavaからC#に移植中。上2つがJavaのコードで下2つがC#に直したコード。プロパティやインデクサを使っていけばいいのだろうか?C#はあまり使ってないのでよくわからん。C#版ではToStringはオーバーライドし…