x86程序集中的mov指令

时间:2011-05-04 22:46:04

标签: assembly x86 att mov

从我读过的mov开始,它将第二个参数复制到第一个参数中。那么,这是做什么的呢?

movl    8(%ebp),    %edx

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

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

1 个答案:

答案 0 :(得分:18)

movl 8(%ebp), %edx

在“AT& T语法”中;在此语法中,源位于第一位,而目标位于第二位。所以是的,你的信念是正确的。大多数文档使用“英特尔语法”,它具有相反的顺序。对于刚接触x86组件的人来说,这是一个相当混乱的原因。

在英特尔语法中,您的指示将被写入:

mov edx, [ebp + 8]

注意寄存器名称前没有%,地址使用方括号而不是括号,并且指令上没有l后缀。这些都是无用的东西,知道你正在看哪种形式的装配。