9
A
回答
12
彙編程序有一個源文件可以查看。它必須建立一個基於該源文件的內存映像。所以它從0開始,代碼爲0,數據開始爲0。結果進入目標文件。
現在,鏈接器來了,需要將許多目標文件合併成一個可執行文件(或內核映像,或其他)。它不能讓每個人都在0,他們會重疊。因此,它必須重新定位地址,以便將每個對象文件的數據值分配到唯一的範圍。
然後,圖像被加載到虛擬內存中,操作系統可能有很好的理由想要使用非'0'的地址作爲基本虛擬地址。所以,在運行時,它要重新定位一切。
最後,如果涉及共享庫,彙編程序和鏈接程序都不知道它們將在運行環境中的位置,因此必須重定位它們的引用。
相關問題
- 1. 什麼是「英雄單位」的含義?
- 2. CSS中的重要含義是什麼?
- 3. x:Xamarin Button的雙重含義是什麼?
- 4. Perl中「鎖定」的含義是什麼?
- 5. 重新定義「新」操作符的目的是什麼?
- 6. DTMobileIS的含義是什麼?
- 7. if(';')的含義是什麼?
- 8. ui.draggable.draggable的含義是什麼?
- 9. URL的含義是什麼
- 10. android:backgroundDimAmount的含義是什麼?
- 11. 什麼是java.io.tmp的含義
- 12. !int_variable--?的含義是什麼!
- 13. 什麼是WindowsIdentity的含義
- 14. CronJobs的含義是什麼?
- 15. 「error_subcode」的含義是什麼
- 16. xmlns:android的含義是什麼?
- 17. $ @的含義是什麼?
- 18. SootMethod.getSubSignature()的含義是什麼?
- 19. view.bounds.origin的含義是什麼?
- 20. 「UseTaskFriendlySynchronizationContext」的含義是什麼?
- 21. DFA的含義是什麼?
- 22. configureDefaultServletHandling的含義是什麼?
- 23. GLib爲什麼重新定義類型?
- 24. 什麼是可重定位程序?
- 25. 什麼是_Use_decl_annotations_含義
- 26. 代碼含義是什麼?
- 27. erlang中的「重新定義模塊」錯誤是什麼意思?
- 28. 重新定義訪問修飾符的影響是什麼?
- 29. 如果包含的塊是內聯的,那麼絕對定位元素的確切含義塊是什麼?
- 30. 什麼是CSS中的'qualified'的定義/含義? (csslint.net警告)
http://stackoverflow.com/questions/6002359/so-most-of-the-binary-is-composed-of-reloc-table/6092773#6092773 – JosephH 2013-05-05 15:02:57
什麼是您的實際編程問題?您的程序是否因爲重定位問題而無法運行? – 2013-05-05 15:04:21
詳細的最小示例:http://stackoverflow.com/a/30507725/895245 – 2015-10-22 08:32:23