【发布时间】:2017-02-23 05:39:23
【问题描述】:
我正在尝试编译以下程序集...
movq $0x3534373536383235, 0x000000000055638f8
movq $0x55638f8, %rdi
retq
第一行抛出错误Error: operand size mismatch for 'movq'
这对我来说没有意义,因为它们都是 8 字节数字。
我做了一些研究,并推荐了movabsq,就像这样......
movabsq $0x3534373536383235, 0x000000000055638f8
movq $0x55638f8, %rdi
retq
但这会引发错误:Error: operand size mismatch for 'movabs'
我错过了什么?
这是我的 mac 的全部错误
level3.s:1:27: error: invalid operand for instruction
movq $0x3534373536383235, 0x000000000055638f8
^~~~~~~~~~~~~~~~~~~
【问题讨论】:
-
AnT's link 不是一个很好的 dup 目标,因为问题被混淆/破坏了:
movq $0xffffffffffffffff, -8(%rbp)可以使用符号扩展的 32 位立即数进行编码,以及其他问题,请参阅我的 cmets 关于该问题.