Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gcc movq的操作数大小不匹配_Gcc_Assembly_X86 - Fatal编程技术网

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您的解决方案特别有效!非常感谢。