根据我对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/