托管模块的组成部分
我們可以使用任何支持CLR的編程語言來創建源代碼文件。然后使用相應的編譯器來做語法檢查和源代碼分析。但是不管使用的是何種編譯器,最后生成的結果都是一個托管模塊(Managed Module)。托管模塊是一個需要CLR才能執行的標準WindowsPE(Portable executable,簡稱PE)文件。
下表描述了一個托管模塊的各個組成部分
| 組成部分 | 描述 |
| PE表頭 | 標準的Windows PE文件表頭,類似于通用對象文件格式(Common Object File Format,簡稱COFF)表頭。該表頭指出了文件的類型:GUI(圖像用戶界面),CUI(控制臺用戶界面),或者DLL(譯注:DLL在以前表示Windows中的動態鏈接庫文件,即Dynamic Link Library,它是以動態鏈接的方式提供的一組函數庫。在.net平臺中,由于和傳統的動態鏈接庫文件有著相同的擴展名.dll,所以DLL文件的名稱被沿用了下來,但其含義已經有所改變。.NET中的DLL特指程序集文件的一種形式)另外該表頭還包括一個時間標記用于表示文件創建的時間。對于僅包含IL代碼的模塊,該表頭的大多數信息會被忽略。對于包含有本地CPU代碼的模塊,該表頭還會包含有關本地CPU代碼的一些信息。 |
| CLR表頭 | 包含標識托管模塊的一些信息(可以被CLR或者一些實用工具解析)。這些信息包括托管模塊所需要的CLR版本號,一些標記,托管模塊入口點方法(Main方法)的MethodRef元數據標記,以及有關托管模塊的元數據、資源、強命名、標記和其他一些意義不是太大的信息的位置和尺寸 |
| 元數據 | 每個托管模塊都包含一些源數據表。元數據表主要分兩種,一種用于描述源代碼中定義的類型和成員,一種用于描述源代碼中引用的類型和成員 |
| 中間語言(IL)代碼 | 編譯器在編譯源代碼時產生的指令。CLR在運行時會將IL代碼編譯成本地CPU指令 |
?
大多數早先的編譯器產生的代碼都是面向特定CPU的體系的。
轉載于:https://www.cnblogs.com/ajiefj/archive/2010/03/31/1701737.html
總結
- 上一篇: 男人必看的46条忠告
- 下一篇: .net框架读书笔记---通用对象操作(