1

次のcmp命令は私を混乱させます:

%eax,0x18(%esp,%ebx,4)

arg1 と arg2 を比較していることは知っていますが、arg2 で括弧内のものと正確に何が起こっているのでしょうか?

ありがとう

4

2 に答える 2

0

esp と ebx の値に基づいてメモリ位置のアドレスを計算します。使用されているアセンブリ表記を指定していないので、esp + 4*ebx + 0x18 であると推測できます。

于 2014-03-23T23:58:36.090 に答える
0

これは、at&t 構文の有効なアドレスです。一般的な形式はdisplacement(base, index, scale)、 wheredisplacementは数値 (アドレス) でbaseあり、indexare レジスタであり、は、、またはscaleの因数です。結果のアドレスは次のように計算されます。コンポーネントは省略される場合があります。1248displacement + base + index * scale

ちなみに、gnu ツールを intel 構文モードに切り替えることもできます。

于 2014-03-23T23:59:51.813 に答える