4.1 程序的裝入和鏈接

在計算機中,如何把我們編寫的計算機高級語言?一般要經(jīng)過幾個步驟:首先是要編譯,由編譯程序(Compiler)將用戶源代碼編譯成若干個目標模塊(Object Module);其次是鏈接,由鏈接程序(Linker)將編譯后形成的一組目標模塊,以及他們所需要的庫函數(shù)鏈接在一起,形成一個完整的裝入模塊(Load Module),最后是裝入,由裝入程序(Loader)將裝入模塊裝入內(nèi)存。

4.1.1 程序的裝入

在將一個裝入模塊裝入內(nèi)存時,可以有


1.絕對裝入方式
2.可重定位裝入方式
3.動態(tài)運行時裝入方式


  1. 絕對裝入方式:
    不需要對程序和數(shù)據(jù)地址進行修改

  2. 可重定位裝入方式:
    在裝入時對目標程序中指令和數(shù)據(jù)的修改過程稱為重定位,又因為地址變換通常是在裝入時一次完成的,以后不再發(fā)生,故城為靜態(tài)重定位(靜態(tài)鏈接以后可以使用)

  3. 動態(tài)運行時重定位:
    程序和數(shù)據(jù)的地址在內(nèi)存中的位置可能要經(jīng)常改變,此時就應(yīng)采用動態(tài)運行時裝入的方式,在裝入模塊裝入內(nèi)存后,并不立即把裝入模塊中的相對地址換位絕對地址,而是把這種地址轉(zhuǎn)換推遲到程序真正要執(zhí)行時才進行。

網(wǎng)友評論