| ア | イ | ウ | エ | オ |
| カ | キ | ク | ケ | コ |
| サ | シ | ス | セ | ソ |
| タ | チ | ツ | テ | ト |
| ナ | ニ | ヌ | ネ | ノ |
| ハ | ヒ | フ | ヘ | ホ |
| マ | ミ | ム | メ | モ |
| ヤ | ユ | ヨ | ||
| ラ | リ | ル | レ | ロ |
| ワ | ヰ | ヴ | ヱ | ヲ |
| ン |
| 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 |
コメントなどを投稿するフォームは、日本語対応時のみ表示されます