0

EIPとリターンアドレスの違いを説明できる人はいますか?

同じように見えますが、私のデバッガーでは、それらが異なることを示しています。

4

1 に答える 1

2

EIP レジスタは、実行しようとしている命令のアドレスを保持します。呼び出しが実行されると、命令は EIP のアドレスから読み取られ、EIP は呼び出し命令を超えてインクリメントされ、この更新された EIP (つまり、呼び出し後の命令のアドレス) がスタックにプッシュされます。これが戻りアドレスになります。関数アドレスは、次に実行する命令として EIP にロードされます。関数の return ステートメントが実行されると、リターン アドレスがスタックからポップされ、EIP にロードされるため、call 命令の後に実行が継続されます。

于 2015-10-05T01:11:23.770 に答える