电竞比分网-中国电竞赛事及体育赛事平台

分享

NET程序是如何編譯的

 昵稱(chēng)10504424 2013-07-24
NET程序是如何編譯的?

      如果在系統(tǒng)中運(yùn)行.NET程序,必須先安裝相應(yīng)版本的.NET框架。.NET程序不是已經(jīng)編譯過(guò)了么?為什么還要依賴(lài).NET框架呢?這和.NET程序的運(yùn)行機(jī)制有關(guān),傳統(tǒng)上,程序分為源代碼層和編譯后的本機(jī)代碼層(機(jī)器碼)。而.NET提供了對(duì)多種編程語(yǔ)言以及多重平臺(tái)的支持,所以在其中添加了中間代碼層,中間代碼被稱(chēng)為IL或MSIL。由于多了中間代碼,使.NET程序有了更好的靈活性,有運(yùn)行多個(gè)平臺(tái)的可能(如Linux系統(tǒng))。

       .NET框架的核心是CLR,即公共語(yǔ)言運(yùn)行時(shí),CLR是.NET程序的運(yùn)行庫(kù)環(huán)境。中間語(yǔ)言需要在CLR中運(yùn)行,并轉(zhuǎn)換成機(jī)器碼,所以.NET程序必須依賴(lài).NET框架才能運(yùn)行。以C#語(yǔ)言為例,C#編譯器編譯的程序只有中間語(yǔ)言構(gòu)成,無(wú)法直接運(yùn)行,必須由CLR執(zhí)行。

補(bǔ)充:

       .NET的這種編譯運(yùn)行機(jī)制和Jave、ActionScript較相似,Java第一次編譯為字節(jié)碼,而Java良好的移植性得益于此。只要客戶機(jī)安裝了Java虛擬機(jī)(JVM),就可以直接運(yùn)行Java程序(JVM將字節(jié)碼編譯成機(jī)器碼)。類(lèi)似的,ActionScript同樣第一次被編譯成字節(jié)碼,并存放在swf文件中。只要客戶機(jī)安裝了FlashPlayer,swf即可運(yùn)行,因?yàn)镕lashPlayer含有AS虛擬機(jī)(AVM)。可見(jiàn),.NET的CLR和JVM、AVM是殊途同歸。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多