1

配列のアドレス (関数へのポインターとして渡される) を esi レジスターに取得しました。配列の特定のセルにアクセスするにはどうすればよいですか? すなわち:

my_array[a + b * c]

c定数です。

4

2 に答える 2

3

LEAなどの指示を調べる

次のように考えてください。

LEA edx,[esi+ebx*4]
于 2010-05-29T12:30:18.283 に答える
1

次のように直接移動することもできます。

MOV EDX, [ESI + 4*EBX]

静的配列の場合、実際には一度に2つのレジスタを使用してインデックスを付けることができますが、アドレッシングモードでは配列のベースアドレスを32ビットの変位として使用します。これは、位置に依存しないコードでのみ機能します。

MOV EDX, my_array[ECX + 4*EBX]

2つの異なるレジスタを使用する代わりに、同じレジスタを2回使用して、3(ebx + ebx*2)、5、または9の倍率をシミュレートできます。

于 2010-05-31T11:10:30.420 に答える