文章出處

1..NET語言的編譯器接受源代碼文件,并生成名為程序集的輸出文件。

 

  • 程序集要么是可執行的,要么是DLL
  • 程序集里的代碼并不是本機代碼,而是一種名稱為CIL的中間語言
  • 程序集包含如下信息:
    • 程序的CIL
    • 程序中使用的類型的元數據
    • 對其他程序集引用的元數據

2.   程序的編譯過程

   程序的CIL直到它被調用運行時才會被編譯成本機代碼。在運行時,CLR執行下面步驟:

    • 檢查程序集的安全特性
    • 在內存中分配空間
    • 把程序集中的可執行代碼發送給實時編譯器(JIT),把其中的一部分編譯成本機代碼。

程序集中的可執行代碼只在需要的時候由JIT編譯器進行編譯,然后它就被緩存起來以備在后來的程序中執行。這就意味著不被調用的代碼不會被編譯成本機代碼,而且被調用的代碼只被執行一次。

一旦CIL被編譯成本機代碼,CLR就在它運行時管理它,執行像內存釋放、數組邊界檢查、檢查參數類型、異常管理等任務。有兩個重要的術語由此而生。

    • 托管代碼:為.NET框架編寫的代碼稱為托管代碼,需要CLR
    • 非托管代碼:不在CLR控制下運行的代碼,比如Win32 C/C++ DLL,稱為非托管代碼

3.編譯和執行過程圖

QQ圖片20140322124557


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()