从我读过的mov
开始,它将第二个参数复制到第一个参数中。那么,这是做什么的呢?
movl 8(%ebp), %edx
它将edx中的任何内容复制到函数的第一个参数(因为ebp
的偏移量为+8是一个参数)?
我觉得这真正意味着将第一个参数移到edx
寄存器中,但我在维基百科上读到它是另一种方式?
答案 0 :(得分:18)
movl 8(%ebp), %edx
在“AT& T语法”中;在此语法中,源位于第一位,而目标位于第二位。所以是的,你的信念是正确的。大多数文档使用“英特尔语法”,它具有相反的顺序。对于刚接触x86组件的人来说,这是一个相当混乱的原因。
在英特尔语法中,您的指示将被写入:
mov edx, [ebp + 8]
注意寄存器名称前没有%
,地址使用方括号而不是括号,并且指令上没有l
后缀。这些都是无用的东西,知道你正在看哪种形式的装配。