ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
x86の機械語コード中にあり、実効アドレスを指定したメモリーアクセスをする際の情報を与えるためのバイト。i386の32ビット以降で追加された。
32ビットモードでのアドレッシングの場合、インデックスを使った実効アドレス指定は、ModR/Mだけでは出来ない。そこでこのような場合は、ModR/Mの直後にSIBバイトが置かれる。
ModR/Mの各モードごとにR/Mフィールドを100とすると、SIBを使用してアドレスの参照方法を指定できる。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
Scaleフィールド | Indexフィールド | Baseフィールド |
これを組み合わせることで、[eax+edx*4+10]といったような実効アドレスを指定し、メモリアクセスをすることができる。
この例の場合、eaxがBase、edxがIndex、4がScaleということになる。
ベースアドレスを指定するレジスターを指定するフィールドである。
ModR/MのModフィールドによって、baseの解釈が変わる。
64ビットでは、レジスター数が倍となり表現に4ビットを要するため、4ビット目はREXプリフィックスのREX.bで表わす。
レジスターはロングモード(64ビット)でのものを記載しているが、32ビットでも(R8から15が無いことを除けば)同様である。
mod | ||||
---|---|---|---|---|
rex.b | base | 00 | 01 | 10 |
0 | 000 | RAX | RAX + disp8 | RAX + disp32 |
001 | RCX | RCX + disp8 | RCX + disp32 | |
010 | RDX | RDX + disp8 | RDX + disp32 | |
011 | RBX | RBX + disp8 | RBX + disp32 | |
100 | RSP | RSP + disp8 | RSP + disp32 | |
101 | disp32 | RBP + disp8 | RBP + disp32 | |
110 | RSI | RSI + disp8 | RSI + disp32 | |
111 | RDI | RDI + disp8 | RDI + disp32 | |
1 | 000 | R8 | R8 + disp8 | R8 + disp32 |
001 | R9 | R9 + disp8 | R9 + disp32 | |
010 | R10 | R10 + disp8 | R10 + disp32 | |
011 | R11 | R11 + disp8 | R11 + disp32 | |
100 | R12 | R12 + disp8 | R12 + disp32 | |
101 | disp32 | R13 + disp8 | R13 + disp32 | |
110 | R14 | R14 + disp8 | R14 + disp32 | |
111 | R15 | R15 + disp8 | R15 + disp32 |
Mod=00の場合、ベースを指定する時はディスプレイスメントは指定できないが、ベースレジスター無し(base=101)を指定する場合)はディスプレースメントが必須である。ベースもディスプレースメントも無い、という指定は出来ない。
Mod=01またはMod=10の場合、ベースなしという指定は出来ず、またディスプレースメントが必須となる。
インデックスレジスターを指定するための3ビットのフィールドである。
32ビットでは、rex.x=0のレジスターのみが使える。
64ビットでは、レジスター数が倍となり表現に4ビットを要するため、4ビット目はREXプリフィックスのREX.xで表わす。
rex.x | index | レジスター |
---|---|---|
0 | 000 | RAX |
001 | RCX | |
010 | RDX | |
011 | RBX | |
100 | RSP | |
101 | RBP | |
110 | RSI | |
111 | RDI | |
1 | 000 | R8 |
001 | R9 | |
010 | R10 | |
011 | R11 | |
100 | R12 | |
101 | R13 | |
110 | R14 | |
111 | R15 |
インデックスレジスターの倍率を指定するフィールドである。
scale | 倍率 |
---|---|
00 | なし |
01 | 2 |
10 | 4 |
11 | 8 |
コメントなどを投稿するフォームは、日本語対応時のみ表示されます