编译以下指令时:
movl 4(%ebp), 8(%ebp)
我得到了:内存参考太多。
它出了什么问题?
答案 0 :(得分:7)
括号前面的数字是一个字节偏移量(导致内存引用发生),并且你不能将其中两个带有movl
。您需要先将值临时移动到寄存器。
movl 4(%ebp), %ecx
movl %ecx, 8(%ebp)
答案 1 :(得分:2)
这不是法律指示。对于大多数引用存储器的指令,必须将其移入/移出寄存器。
答案 2 :(得分:2)
movl
不会记忆内存移动,你必须通过寄存器(因此有两个movl
指令)。