Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
编译以下指令时:
movl 4(%ebp), 8(%ebp)
我得到了:太多的内存引用。
它出什么问题了?
括号前的数字是字节偏移量(这会导致发生内存引用),您不能将其中两个与movl. 您需要先将值临时移动到寄存器。
movl
movl 4(%ebp), %ecx movl %ecx, 8(%ebp)
这不是法律指示。对于大多数引用内存的指令,您必须将其移入/移出寄存器。
movl不进行内存移动,您必须通过寄存器(因此有两条movl指令)。