18

根据我所读到的mov,它将第二个参数复制到第一个参数中。那么,这有什么作用呢?

movl 8(%ebp), %edx

它将 edx 中的任何内容复制到函数的第一个参数(因为 +8 的偏移量ebp是一个参数)?

我觉得这真正意味着将第一个参数移动到edx寄存器中,但我在维基百科上读到它是相反的?

4

1 回答 1

30
movl 8(%ebp), %edx

在“AT&T 语法”中;在这种语法中,源在前,目标在后。所以,是的,你的信念是正确的。大多数文档使用“英特尔语法”,它具有相反的顺序。对于 x86 汇编的新手来说,这是一个相当混乱的根源。

在 Intel Syntax 中,您的指令会写成:

mov edx, [ebp + 8]

请注意%寄存器名称前没有,地址使用方括号代替括号,并且l指令中没有后缀。这些都是无用的赠品,可以知道您正在查看哪种形式的组装。

于 2011-05-04T22:48:56.170 回答