機械語初心者がアセンブラを作ってみる

機械語初心者がアセンブラを作ってみるだけのブログです。ひつまぶしひつまぶし

第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していちいち確かめるしか‥‥