4.1 程序的裝入和鏈接

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

4.1.1 程序的裝入

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


1.絕對(duì)裝入方式
2.可重定位裝入方式
3.動(dòng)態(tài)運(yùn)行時(shí)裝入方式


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

  2. 可重定位裝入方式:
    在裝入時(shí)對(duì)目標(biāo)程序中指令和數(shù)據(jù)的修改過(guò)程稱(chēng)為重定位,又因?yàn)榈刂纷儞Q通常是在裝入時(shí)一次完成的,以后不再發(fā)生,故城為靜態(tài)重定位(靜態(tài)鏈接以后可以使用)

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

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式