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位值。請讓我知道如何做到這一點。
我正在寫下面的說明。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位值。請讓我知道如何做到這一點。
在fasm中你可以用「mov [qword 0],rax」來實現。請注意,AL,AX,EAX,RAX是唯一允許作爲64位絕對編址指令源或目標寄存器的寄存器,因此您將無法在此處使用RCX(將值複製到RAX)
如果您的彙編程序無法強制完全尋址,則使用:
db 0x48, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
您打算接受答案嗎? – 2011-07-16 19:52:13
我有和你一樣的問題。現在我已經解決了它,請參閱[這裏](http://stackoverflow.com/q/11341486/1490161) – 2012-07-06 01:19:11
可能的重複[從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