根据我读到的有关 mov
的内容,它将第二个参数复制到第一个参数中。那么,这有什么作用呢?
movl 8(%ebp), %edx
它将 edx 中的所有内容复制到函数的第一个参数(因为距 ebp
的 +8 偏移量是一个参数)?
我觉得这真正的意思是将第一个参数移动到 edx
寄存器中,但我在维基百科上读到它是相反的?
最佳答案
movl 8(%ebp), %edx
位于“AT&T 语法”中;在此语法中,源在前,目标在后。所以是的,你的信念是正确的。大多数文档使用“英特尔语法”,其顺序相反。对于刚接触 x86 汇编的人来说,这是一个相当大的困惑。
在英特尔语法中,您的指令将编写为:
mov edx, [ebp + 8]
请注意寄存器名称之前缺少 %
,地址使用方括号而不是圆括号,并且指令上缺少 l
后缀。这些是了解您正在查看哪种形式的 assembly 的绝对赠品。
关于assembly - x86 汇编中的 mov 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890724/