movlpsためNASM 64ビット即値のアドレスは「DWORDデータの範囲を超える」を与えます

StackOverflow https://stackoverflow.com/questions/3623899

  •  26-09-2019
  •  | 
  •  

質問

私は、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]

(最初のmovmovabsする必要があり、私は実際にインテルがアセンブリ構文を知らない)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top