7

编译以下指令时:

movl 4(%ebp), 8(%ebp)

我得到了:太多的内存引用

它出什么问题了?

4

3 回答 3

9

括号前的数字是字节偏移量(这会导致发生内存引用),您不能将其中两个与movl. 您需要先将值临时移动到寄存器。

movl 4(%ebp), %ecx
movl %ecx, 8(%ebp)
于 2010-03-28T02:31:35.230 回答
2

这不是法律指示。对于大多数引用内存的指令,您必须将其移入/移出寄存器。

于 2010-03-28T02:30:56.557 回答
2

movl不进行内存移动,您必须通过寄存器(因此有两条movl指令)。

于 2010-03-28T02:31:27.940 回答