回答
在這種情況下,-0x7ec55ec0
只是編寫0xffffffff813aa140
(換句話說,-0x7ec55ec0 + 0x10000000000000000
)的一種較短的方式。
假設在該地址有一個跳轉表,由rax
索引。
如果它的任何幫助,在Intel彙編語法相同的指令是:
call qword ptr [0xffffffff813aa140 + rax*8]
有沒有負面的地址。地址是無符號的。
這是什麼意思是你用高位設置了一個地址,並將其格式化爲一個有符號的數字(或者使用了一種將其格式化爲有符號數的方法)。
地址是否有簽名或未簽名幾乎取決於解釋和/或個人偏好。一種看待它的方法是,例如在x64/x86_64中,如果您接受地址爲47位帶符號,則地址空間是連續的,即[[-2^48 .. 2^48-1]'。如果你堅持對它們進行無符號處理,你最終會得到兩個單獨的有效地址範圍「[0..2^48-1]」和[2^64-2^48]的「規範」/「非規範」 .. 2^64-1]'(以及之間的任何事物都是「非規範的」,不可表示)。 – 2011-03-25 10:31:20
如果通過「解釋」,你的意思是數字如何被格式化爲一個字符串,那麼這就是我所說的。但是,我沒有看到這與「個人偏好」有什麼關係。你在哪裏見過計算機地址被描述爲負面? – 2011-03-25 22:24:25
這是一個簡單的結果,它是如何「規範」尋址(地址空間中有空洞)的工作原理 - 容易接受,總尋址範圍是連續的(也可以是負的),或者只有一系列「值」那不是地址?另外,您接受地址_offsets_可以爲負數,您沒有任何問題,那麼會阻止_addresses_變爲負數? – 2011-03-28 09:20:34
「0x7ec55ec0」是否定地址偏移量。是的,它將從8 *%rax的值中減去。這種減法是在64位無符號數的兩個補碼錶示中相當於添加「0xffffffff8100b9e4」。
推測%rax * 8的值將大於0x7ec55ec0,這樣代碼或數據段通常範圍內的值就會生成。
請注意,x86平臺上的地址偏移確實總是被簽名(包括8位和32位錯誤),但結果地址當然是未簽名的。
- 1. 在裝配中strcpy是什麼意思?
- 2. InetSocketAddress中的通配符地址是什麼意思?
- 3. RegionUsageHeap是什麼意思!地址 - 概要
- 4. 邏輯地址是什麼意思,它們是什麼樣的?
- 5. 網址中的gs_upl是什麼意思?
- 6. 「從IP地址創建套接字地址」是什麼意思?
- 7. 是什麼意思:是什麼意思?
- 8. 負載係數0.75是什麼意思?
- 9. 短語「支持本地地址的重用」是什麼意思?
- 10. iPhone崩潰日誌中的內存地址是什麼意思?
- 11. 裝配中代碼的第一行是什麼意思?
- 12. 負NCC係數w.r.t是什麼意思?圖像模板匹配?
- 13. 這個網址是什麼意思?
- 14. 是什麼意思,在Python中是什麼意思?
- 15. SUMIFS是什麼意思,下面給出的表達式是什麼意思
- 16. 「指定給RtlFreeHeap(06450000,08387460)的無效地址」是什麼意思?
- 17. 什麼是「=!」在下面的PHP代碼中是什麼意思?
- 18. 什麼是CAD中的C2曲面,C2是什麼意思?
- 19. 下面的比較是什麼意思?
- 20. 下面的警告是什麼意思?
- 21. 下面的代碼是什麼意思?
- 22. 下面的陳述是什麼意思?
- 23. 下面的代碼是什麼意思
- 24. 下面的driver_options params是什麼意思?
- 25. 下面的代碼是什麼意思?
- 26. 「def」上面的「@」是什麼意思?
- 27. 下面的說法是什麼意思?
- 28. SURF的min_dist和max_dist是什麼意思,FlannMatcher是什麼意思
- 29. 「?」是什麼意思?調用jsp的標記是什麼意思?
- 30. 是什麼意思。 =和=。在arm組裝
因此,'*'在程序集中評估爲'[]',對吧? – compiler 2011-03-25 02:48:39
@compiler:非常好,是的。 – 2011-03-25 02:55:58