Assembly 将RAX的内容移动到C变量(x86-64 asm)

Assembly 将RAX的内容移动到C变量(x86-64 asm),assembly,x86,x86-64,Assembly,X86,X86 64,这是一个相当幼稚的问题。我只是在分配一些可执行内存,并手动组装一些x86代码以在其中运行。我对64位模式下的寻址方式有点困惑。如果我的C代码中有一个变量,我想将RAX的内容移动到这个变量中,我应该使用哪种形式的MOV指令?(这不是使用内联汇编,所以我无法让编译器为我做这件事;我只需要使用&var的值。)使用英特尔语法,它将类似于mov[var],rax,其中var基本上是64位立即地址 我认为这就是英特尔在“英特尔64和IA-32体系结构”中所称的“MOV moffs64*,RAX” 《软件开发

这是一个相当幼稚的问题。我只是在分配一些可执行内存,并手动组装一些x86代码以在其中运行。我对64位模式下的寻址方式有点困惑。如果我的C代码中有一个变量,我想将RAX的内容移动到这个变量中,我应该使用哪种形式的MOV指令?(这不是使用内联汇编,所以我无法让编译器为我做这件事;我只需要使用&var的值。)

使用英特尔语法,它将类似于
mov[var],rax
,其中
var
基本上是64位立即地址

我认为这就是英特尔在“英特尔64和IA-32体系结构”中所称的“MOV moffs64*,RAX”
《软件开发人员手册》。

非常感谢。从外观上看,这只有在RAX和少量其他寄存器的情况下才可能实现?似乎这种形式只有RAX(无论如何是64位的)。Nathan,指令是如何编码的?操作码A2-A3是特定于累加器的,我看不到任何使用REX.W+89的方法,因为AFAIK不可能有64位位移。FWIW,yasm接受“MOV[qword 0x0],RAX”,但拒绝“MOV[qword 0x0],RDX”