2010-11-15 38 views
2

我写一个程序自修改。86 64装配

movq  $TARGET_CIA, 0x550(%rax) 

这个符号TARGET_CIA最初是不确定的,在运行时我尝试将64位立即值复制到这个位置。但是在编译时这条指令将这个未定义的立即数的值作为32位,当我试图复制64位时,我在它的位置看到了带符号的扩展32位。 有没有办法让这个未定义的符号被视为64位值?

+0

先接受一些答案... – Macmade 2011-04-24 11:16:14

+0

可能相同:http://stackoverflow.com/questions/19415184/load-from-a-64-bit-address-into-other-register-than-rax – 2015-05-24 21:05:57

回答

0

我只需运行另一指令抢第二32位。可能不是最好的方法,因为我有一段时间没有做任何ASM,但它会工作。 :)

好运 卢克·彼得森

12

你需要

movabs $0x1234567890abcdef, 0x550(%rax) 

的movabs指令所需的64位立即数。

+0

哈哈,只是注意到这是一个necro答案;-)无论如何,也许它在某些时候用于某人;-) – hirschhornsalz 2011-04-24 19:56:34