我写一个程序自修改。86 64装配
movq $TARGET_CIA, 0x550(%rax)
这个符号TARGET_CIA最初是不确定的,在运行时我尝试将64位立即值复制到这个位置。但是在编译时这条指令将这个未定义的立即数的值作为32位,当我试图复制64位时,我在它的位置看到了带符号的扩展32位。 有没有办法让这个未定义的符号被视为64位值?
我写一个程序自修改。86 64装配
movq $TARGET_CIA, 0x550(%rax)
这个符号TARGET_CIA最初是不确定的,在运行时我尝试将64位立即值复制到这个位置。但是在编译时这条指令将这个未定义的立即数的值作为32位,当我试图复制64位时,我在它的位置看到了带符号的扩展32位。 有没有办法让这个未定义的符号被视为64位值?
我只需运行另一指令抢第二32位。可能不是最好的方法,因为我有一段时间没有做任何ASM,但它会工作。 :)
好运 卢克·彼得森
你需要
movabs $0x1234567890abcdef, 0x550(%rax)
的movabs指令所需的64位立即数。
哈哈,只是注意到这是一个necro答案;-)无论如何,也许它在某些时候用于某人;-) – hirschhornsalz 2011-04-24 19:56:34
先接受一些答案... – Macmade 2011-04-24 11:16:14
可能相同:http://stackoverflow.com/questions/19415184/load-from-a-64-bit-address-into-other-register-than-rax – 2015-05-24 21:05:57