2010-11-15 72 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