2012-07-23 76 views

回答

3

他們正在顯示鏈接時應用的重定位位置。

[nnnnnnnn]顯示絕對重定位(鏈接器執行重定位時,某個部分的基地址將被添加到偏移量中)。例如一旦二進制完全鏈接,push str2指令中的那些字節將被更改爲包含.data + 0x09的基址。

(nnnnnnnn)顯示PC相對重定位(用於調用和分支,其中最終值必須與下一條指令的地址相關)。例如調用func2指令中的字節將用func2的最終地址和下一條指令(call func3)的地址之間的差異進行更新。

調用func3指令本身沒有括號,因爲在這種情況下不需要重定位 - 調用指令需要一個相對地址,但func3位於同一段內,所以相對地址是已知的(以下指令是.text + 0x21,而func3是.text + 0x2c,所以相對地址是0xb,而不管.text的最終地址)。

找到:here

相關問題