2010-11-15 74 views
1

我正在写下面的说明。x86_64 64位立即移动

movq  $TARGET_CIA, %rcx 

TARGET_CIA是未定义的变量,因此将其视为零。该指令的拆卸看起来像

0: 48 c7 c1 00 00 00 00 mov $0x0,%rcx 

在运行时,我想通过复制64位值TARGET_CIA符号的偏移来取代这个$TARGET_CIA与64位值。请让我知道如何做到这一点。

+0

您打算接受答案吗? – 2011-07-16 19:52:13

+0

我有和你一样的问题。现在我已经解决了它,请参阅[这里](http://stackoverflow.com/q/11341486/1490161) – 2012-07-06 01:19:11

+1

可能的重复[从64位地址加载到rax以外的其他寄存器](http:// stackoverflow .com/questions/19415184/load-from-a-64-bit-address-into-other-register-than-rax)另一个更新,但更清晰,因为这个问题没有说错误信息或编译命令。可能这里的OP的问题是'%rcx'不可能的。 – 2015-05-25 08:37:38

回答

1

在fasm中你可以用“mov [qword 0],rax”来实现。请注意,AL,AX,EAX,RAX是唯一允许作为64位绝对编址指令源或目标寄存器的寄存器,因此您将无法在此处使用RCX(将值复制到RAX)

如果您的汇编程序无法强制完全寻址,则使用:

db 0x48, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00