我正在从试验和错误中学习x86(_64)程序集。我想做的一件事是将值从-4移到-8中,但GNU汇编程序似乎不喜欢这样:
error: invalid operand for instruction
movl -4(%rsp), -16(%rsp)
我不确定为什么。对我来说,它在逻辑上是有意义的,将偏移量-4的堆栈中的值移动到-16。
答案 0 :(得分:1)
MOV没有操作码,其中源和目标都是内存地址。您需要从寄存器或寄存器(或两者)移动。要将值从一个堆栈位置复制到另一个堆栈位置,只需将MOV复制到寄存器中,然后将MOV复制到目标位置。