『壹』 高級語言源程序編譯後產生的地址是邏輯地址還是物理地址
由於操作系統技術的發展,可重用二進製程序技術使用了內存重定位技術,所以從匯編的角度來看即不是邏輯地址也不是物理地址。而且這個概念有些不同,編譯後產生的地址是相對地址,是相對於可執行頭部位置的地址。而邏輯地址是指在指令系統內部使用的用來訪問內存的一個邏輯表示,通常表現為相對於某個段基地址的偏移量。
當可執行程序被載入內存之後,才會有邏輯地址存在,此時可執行程序被如何載入於何處,地址為多少,由操作系統決定,此時cpu訪問程序用的是邏輯地址。一個程序一旦被編譯確定之後基本上變數初始化的順序固定,資源分配位置也固定,設置有編譯器使用預分配機制,然後採用相對地址引用。
注意:某些工具書也稱二進制可執行文件內所有的相對地址范圍是邏輯地址空間,相對地址就是邏輯地址。因為兩者的訪問方式相似,邏輯地址變換依賴cpu或者附加變換機構(硬體),而二進製程序地址空間變換需要操作系統插手管理。
反匯編分析中常常將二進制內部地址稱為邏輯地址,因為反匯編器不能還原原來匯編代碼的地址跳轉空間特性,因此得到一個相對於二進制數據起點位置的相對地址,而和內存和物理存儲都沒有關系。
『貳』 用戶編寫的程序時一般採用什麼地址
邏輯地址。
因為邏輯地址會直接顯示應用程序的內存單元,就是可以直接看到存儲的位置,所以用戶在編寫程序的時候會直接採用邏輯地址進行編寫。
邏輯地址往往不同於物理地址,通過地址翻譯器或映射函數可以把邏輯地址轉化為物理地址。
『叄』 操作系統中 區分編譯後的形成邏輯地址和鏈接後的形成的最終邏輯地址 什麼意思啊
編譯後產生若干個目標模塊,編譯後的邏輯地址指的是每個模塊都從0號單元開始編址,而鏈接將這些模塊鏈接在一起,形成一個完整的裝入模塊,此時的邏輯地址會重新編址,也就是說鏈接後的邏輯地址是將整個模塊從0號單元開始編址。