Gcc movq的操作数大小不匹配
我试图使用Gcc movq的操作数大小不匹配,gcc,assembly,x86,Gcc,Assembly,X86,我试图使用gcc和objdump为指令序列生成字节码。 下面是我在文件code.s中写的内容: movq $0x1234567891234567,0x602308 所以我想在这里做的是把一个长数据放入一个绝对地址 然后我输入:gcc-c example.s 它给了我一个错误,上面写着:error:movq的操作数大小不匹配` 这是怎么回事?movq的直接操作数被限制在32位。你需要使用movabsq我不知道这是C代码,看起来像汇编?如果汇编程序说它不喜欢,它就不喜欢。你能找到一个GCC生成这样
gcc
和objdump
为指令序列生成字节码。
下面是我在文件code.s
中写的内容:
movq $0x1234567891234567,0x602308
所以我想在这里做的是把一个长数据放入一个绝对地址
然后我输入:gcc-c example.s
它给了我一个错误,上面写着:error:movq的操作数大小不匹配`
这是怎么回事?movq的直接操作数被限制在32位。你需要使用movabsq我不知道这是C代码,看起来像汇编?如果汇编程序说它不喜欢,它就不喜欢。你能找到一个GCC生成这样一条指令的例子吗?否则,你可能不会成功。如果可以,您需要找出它的工作方式与不工作方式有什么不同。在英特尔手册中,我没有看到mm/m64、imm64
被列为MOVQ
支持的操作数组合。您可以将立即数加载到一个64位GPRs(例如,rax
)中,然后将该寄存器写入内存。@Michael您的解决方案特别有效!非常感谢。