汇编MOV指令

Assembly MOV Instruction

大家好,我正在参加 CTF 挑战赛,不太理解这个 asm 命令:

mov    %edx,0x20(%esp,%eax,4)

我假设它:将 $edx 移动到 (0x20 + $esp + $eax + 4)

然而,当我用 gdb 检查时,它是不正确的。有人介意解释一下这条指令是如何工作的吗?

感谢您的帮助!

x86 内存引用的 AT&T 语法如下:

displacement(base,index,scale)

给出displacement+base+(index*scale)的地址。

也就是说,你的指令的目标内存地址是%ESP+0x20+(4*%EAX)。