根据我对mov的了解,它将第二个参数复制到第一个参数中。那么,这是做什么的呢?

movl8(%ebp),%edx


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

我觉得这实际上意味着将第一个参数移到edx寄存器中,但是我在Wikipedia上了解到这是相反的方式吗?

最佳答案

movl 8(%ebp), %edx


在“ AT&T语法”中;按照这种语法,源是第一位,目标是第二位。是的,您的信念是正确的。大多数文档使用“ Intel语法”,其顺序相反。对于x86汇编的新手来说,这是一个很大的困惑。

在英特尔语法中,您的指令将被编写为:

mov edx, [ebp + 8]


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

关于assembly - x86汇编中的mov指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5890724/

10-16 16:01