如果你把你的源代碼編譯成受控代碼,編譯器將把你的源代碼 轉換為Microsoft中間語言(MSIL),這種代碼將是不依賴于CPU的 ,而且能夠高效的轉換為本地代碼。MSIL擁有眾多的指令,像 loading、storing、initializing以及基于對象的方法調用還有算 術邏輯運算、流控、直接內存存儲和異常處理等。在代碼執行之前 ,必須通過JIT編譯器將MSIL轉換為基于特定CPU的代碼。由于運行 時為它所支持的每一種計算機體系結構都提供了一到多個JIT編譯 器,同樣的MSIL指令集合能夠被JIT編譯并且在所有支持的體系結 構上面執行。 當編譯器產生MSIL的同時,也產生元數據,元數據描述了代碼 中的類型,包括每一種類型的定義、每一種類型成員的簽名、代碼 引用的成員以及在執行時運行時用到的其它數據。代碼和元數據都 包括在一個PE文件中,這個PE文件基于并且擴展了已發布的 Microsoft PE以及曾經用于執行信息的通用對象文件格式 (Common Object File Format)(COFF)。PE這種文件格式,將有 利于幫助操作系統識別CLR鏡像。在文件中和MSIL一起存在的元數據 將使得你的代碼是自描述的,也就是說不再需要類型庫或者IDL。在 執行過程中,運行是根據需要從文件中定位和提
|