位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

C# 編寫(xiě)應(yīng)用程序1.CIL 和 JIT

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-12

在編譯使用.NET Framework或.NET Core庫(kù)的代碼時(shí),不是立即創(chuàng)建專用于操作系統(tǒng)的本機(jī)代碼,而是把 代碼編譯為通用中間語(yǔ)言(Common Intermediate Language, CIL)代碼,這些代碼并非專門(mén)用于任何一種操作系統(tǒng), 也非專門(mén)用于C#。其他.NET語(yǔ)言(如Visual Basic .NET或F#)也會(huì)在第一階段編譯為這種語(yǔ)言。開(kāi)發(fā)C#應(yīng)用程 序時(shí),這個(gè)編譯步驟由Visual Studio完成。

顯然,要執(zhí)行應(yīng)用程序,必須完成更多工作,這是Just-In-Time(JIT)編譯器的任務(wù),它把CIL編譯為專用于 0S和目標(biāo)機(jī)器架構(gòu)的本機(jī)代碼。這樣OS才能執(zhí)行應(yīng)用程序。這里編譯器的名稱Just-In-Time反映了 CIL代碼 僅在需要時(shí)才編譯的事實(shí)。這種編譯可以在應(yīng)用程序的運(yùn)行過(guò)程中動(dòng)態(tài)發(fā)生,不過(guò)開(kāi)發(fā)人員一般不需要關(guān)心 這個(gè)過(guò)程。除非要編寫(xiě)性能十分關(guān)鍵的高級(jí)代碼,否則知道這個(gè)編譯過(guò)程會(huì)在后臺(tái)自動(dòng)進(jìn)行,并不需要人工干 預(yù)就可以了。

過(guò)去,經(jīng)常需要把代碼編譯為幾個(gè)應(yīng)用程序,每個(gè)應(yīng)用程序都用于特定的操作系統(tǒng)和CPU架構(gòu)。這通常是 -種優(yōu)化形式(例如,為了讓代碼在AMD芯片組上運(yùn)行得更快),但有時(shí)則是非常重要的(例如,使應(yīng)用程序可 以同時(shí)工作在Win9x和WinNT/2000環(huán)境下)。現(xiàn)在就沒(méi)必要了,因?yàn)镴IT編譯器使用CIL代碼,而CIL代碼是 獨(dú)立于計(jì)算機(jī)、操作系統(tǒng)和CPU的。目前有幾種JIT編譯器,每種編譯器都用于不同的架構(gòu),CLR/CoreCLR 會(huì)使用合適的編譯器創(chuàng)建所需的本機(jī)代碼。

這樣,開(kāi)發(fā)人員需要做的工作就比較少了。實(shí)際上,可以忽略與系統(tǒng)相關(guān)的細(xì)節(jié),將注意力集中在代碼的 功能上就夠了。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部