movlpsためNASM 64ビット即値のアドレスは「DWORDデータの範囲を超える」を与えます
質問
私は、Intelのマニュアルによると、完全に可能であるべき、64ビット幅で即時アドレスで命令movlpsが必要です。したがって、このような何かます:
movlps xmm0, [0x7fffffffffa0]
しかし、私は何を得るすべてはNASMが32ビットにオペランドサイズを切り捨てし、対応する警告印刷されます:
をsample.s:6: warning: dword data exceeds bounds
私は成功せず、QWORDプレフィックスの異なる形で試してみました。
解決
ほとんどのx64命令は64ビットがIMMED取ることはありません。
私は非常に誤解だ場合を除き、あなたがRAXレジスタを介して移動する必要があります。
他のヒント
私はあなたがそれを行うことができるとは思いません。 movlps
のロードまたはストアの値は、64ビット幅のが、即時アドレス及び変位はまだ一般的には32ビットに制限されています。あなたができる最善のは、
mov rax, 0x7fffffffffa0
movlps xmm0, [rax]
(最初のmov
はmovabs
する必要があり、私は実際にインテルがアセンブリ構文を知らない)
所属していません StackOverflow