根据我所阅读的关于 mov 的资料,它会将第二个参数复制到第一个参数中。那么这段代码是做什么用的呢? movl 8(%ebp), %edx 它将 ebp 偏移量为 +8 的参数内容复制到了函数的第一个参数(因为 +8 是第一个参数的偏移量)? 我觉得这实际上意味着将第一个参数移动到了 edx 寄存器中,但是我在维基百科上读到的是相反的说法?
movl 8(%ebp), %edx 这里使用的是“AT&T语法”,在此语法中,源地址在前,目标地址在后。因此,您的想法是正确的。大多数文档使用“Intel语法”,其顺序相反。这对于新手来说是一个很大的困惑点。 在Intel语法中,您的指令将被写成: mov edx, [ebp + 8] 请注意,在寄存器名称前没有%,而是使用方括号代替圆括号表示地址,并且指令后缀中没有l。这些都是判断您正在查看哪种汇编形式的明显特征。
mov [ebp + 8], edx
:) - Ilya Matveychikovmovl 8(%ebp), %edx
,操作员说它将第二个参数复制到第一个参数中,因此是1 <- 2
,但这里说 '在这种语法中,源先于目标',所以是1 -> 2
,然后所以,是的,你的想法是正确的
,现在完全困惑了。 - http8086