第6回 そろそろ飽きてきた
のですが
アセンブラの開発を進めました。
隊長!mallocがありますぞ!ありますぞ!
mov r32 / rm32 というニモニック1つアセンブルするだけでも
たくさん構造体を定義して、
たくさんの処理を書かなければいけないので
もうほんと時間かかります(´・ω・`)
でもってこれのほとんどは
アセンブリを解析して構造体作って
ニモニックやレジスタを定義したconstの構造体配列を読み込んで
いろいろデータの整合性を確認して
機械語作りますよ
という部分なので
mov1つさえできれば後は
ニモニックやレジスタの定義を増やしながら
関数をちょこちょこ修正していくだけなので
ここを乗り越えられれば‥‥飽きるまでに。
蛇足ですが、Intelの 「64 and IA-32 Architectures Software Developer’s Manual」(以下インテルの○○)
406ページ目に2つのレジスタの組み合わせ方の説明発見。
movニモニックの機械語と合わせてハンドアセンブルしてみました。
例えば
mov ecx, eax
は
8B C8
になるとか。
これをアセンブラに任せられるようになりたい‥‥
のになかなかできないorz
今更なんだけど
mov r32, rm32
mov rm32, r32
の違いってなんだろう‥‥
r32は32ビットレジスタ、
rm32はレジスタなのかIMMなのか分からない状態、でいいのかなぁ。
でもそうだとしたら
ディスティネーションオペランドがレジスタなのかIMMなのか分からない状況って
どんなのかなぁって‥‥。
多分違うお(´・ω・`)
dumpbinしていちいち確かめるしか‥‥