次のように命令を符号化することが可能である場合、私は思っていた:RAXを追加x86-64では64ビットのダイレクトメモリオペランドが可能ですか?
<アドレスが> 64ビットを指し、完全な64ビットアドレスである[住所]
、値。 NASMは単純にアドレスを切り捨て、それを32ビットアドレスとしてエンコードしているようです。動作するように思われる64ビット(直接アドレスに)アドレッシングの唯一の形態である:
のMOV RAX、[QWORDアドレス]を用いNASMによってコードさ
REX.W = 1直接アドレッシングを使用したMOVの特殊なオペコードなどがあります。 add命令でREX.Wを使用すると、ターゲットアドレスが64ビット値を含むものとして解釈されますが、64ビットアドレスの指定は許可されません。しかし、別の方法があれば私は好奇心が強いです。
(ちなみに、この問題のため、私は現在、RIP相対アドレッシングを使用しています)。
ダイレクト64ビットアドレッシング形式が不可能であることを誰でも確認できますか?
命令セットの参照は、インターネットからの見知らぬ人ではないことを確認できます;) – Jester
Jester、私は命令セットリファレンスを見てきました。しかし、私はそれを読むのに慣れていないので、特に方法があるかもしれないことを除外することは幾分難しいです。命令セットのリファレンスには、 "[REX.W + 03/r] ADD r64、r/m64"というオプションが一覧表示されていますが、実験とアンワ(MOD R/Mバイトに関する表)に基づいて、 32ビットの指定されたメモリアドレスに格納されています(アドレスを64ビットに拡張する可能性はありません)。 – Morty
@Morty通常のアドレス指定モードには、64ビットの配置または絶対値を持つモードは含まれません。このようなアドレッシングモードを提供する特別な命令のみがあります。 – fuz