我寫一個程序自修改。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