核心:CLR(Common Language Runtime)
托管模塊
不管何種編譯器,最后生成的結(jié)果都是一個托管模塊(managed module),托管模塊是是一個需要CLR才能執(zhí)行的標(biāo)準(zhǔn)Windows 可移植可執(zhí)行文件(PE)。
IL是微軟在咨詢了一些商業(yè)和學(xué)術(shù)上的語言編譯器作者之后開發(fā)的一種獨(dú)立于CPU的機(jī)器語言。
CPU目前還不能直接執(zhí)行IL指令,但將來CPU也許會有這種能力,就目前來說,要執(zhí)行一個方法,它的IL代碼還必須首先換成本地CPU指令,這屬于CLR中的即時編譯器的(JIT)工作。
程序集
CLR實(shí)際并不和模塊打交道,它直接打交道的對象是程序集(assembly)。程序集是一個抽象的概念,它是一個或者多個托管模塊,以及一些資源文件的邏輯組合。
對于一個可重用、可部署、可實(shí)施版本的組件來說,程序集允許我們分離它的邏輯表示和物理表示。完全可以將一些很少使用的類型或者資源放在一些單獨(dú)的程序集文件中,然后根據(jù)需要從Web上下載。另外,程序集還是自描述的,CLR知道執(zhí)行一個CLR的所有內(nèi)容,不必再到注冊表或者其他地方找。
CTS
CLR中的所有類型都是圍繞著類型展開的,類型為應(yīng)用程序和組件提供了他們所需要的功能。類型也作為一種機(jī)制使得一種語言編寫的代碼可以和另一種語言編寫的代碼進(jìn)行無縫地集成,由于類型是CLR的基礎(chǔ),MS專門為此制定了一個正式的規(guī)范,通用類型系統(tǒng)(Common Type System,CTS)來描述類型的定義和行為。
CTS還定義了諸多規(guī)則來管理類型繼承,虛函數(shù),對象生存期等事項,設(shè)計這些規(guī)則的目的是使得他們的語言可以用現(xiàn)代編程語言方便的表達(dá)出來,實(shí)際上,我們甚至不需要學(xué)習(xí)CTS規(guī)則,因為我們選擇的語言已經(jīng)提供了我們所熟悉的語言語法和類型規(guī)則,并且在生產(chǎn)托管模塊時會將這些特定語言的語法映射為CLR“語言”。
通用語言規(guī)范(Common Language Specification,簡稱CLS)
該規(guī)范為編譯器廠商詳細(xì)描述了面向CLR的編譯器必須支持的一個最小特性集合。CLR/CTS支持的特性要遠(yuǎn)比CLS定義的子集豐富得多。
聯(lián)系客服