为什么我不能将堆栈值移动到另一个堆栈值?

时间:2018-03-20 21:17:44

标签: assembly x86

我正在从试验和错误中学习x86(_64)程序集。我想做的一件事是将值从-4移到-8中,但GNU汇编程序似乎不喜欢这样:

error: invalid operand for instruction
    movl -4(%rsp), -16(%rsp)

我不确定为什么。对我来说,它在逻辑上是有意义的,将偏移量-4的堆栈中的值移动到-16。

1 个答案:

答案 0 :(得分:1)

MOV没有操作码,其中源和目标都是内存地址。您需要从寄存器或寄存器(或两者)移动。要将值从一个堆栈位置复制到另一个堆栈位置,只需将MOV复制到寄存器中,然后将MOV复制到目标位置。