请问X64环境中MOV指令使用64位立即数寻址,为什么总是会被GCC截断为32位
代码很简单
movq 0x1234567890abcdef, %rax
经gcc(gas)编译后,objdump。发现代码段发生操作数低32位截断。即立即数只剩下
90 78 56 34 12
但是如果mov一个立即数到rax,操作却没有任何问题:
movq $0x1234567890abcdef, %rax
实在是很不明了其中原由。在Intel和AMD的文档上都没有看到不支持64位立即数寻址一说。非常怀疑操作码有问题。
请各位指教啊!