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

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

ModR/Mバイト

今まで避けてきたけどついに登場したModR/Mバイト。演算でオペランドレジスタ同士だったりメモリを使ったりするとオペコードにでてくる1バイトのデータ。8ビットの中に3つのフィールドがあり、mod、reg/opecode、r/mに分かれている。modが2bitでreg/opecodeとr/mは3bitである。詳しくはIA-32 インテル® アーキテクチャ ソフトウェア・デベロッパーズ・マニュアル 中巻Aの2.4と2.6に載っている。ModR/Mバイトが2進数で01000011だった場合。赤い部分がmod、緑の部分がreg/opecode、青の部分がr/mとなる。modとr/mがセットになっていて、今回の場合はメモリのEBX + disp8番地を示している。reg/opecodeは命令によってRegister IndexかOpecodeになっている。実装は次回にしようと思う。