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