国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET編譯時都做了一些什么

2024-07-10 12:59:57
字體:
來源:轉載
供稿:網友


================================================================<br>
faq - 一個.net程序在編譯和運行時都做了些什么?<br>
================================================================<br>
在新聞組和郵件列表里有大量關于一個.net程序的設計編譯(design-time or<br>
run-time)和運行原理 (cpu-specific binary or pseudo-code)的疑問。<br>
<br>
這里是一個簡單的回答:當你編譯一個c#應用程序或任何一種cls(commmon<br>
language specification)兼容的語言時,它將首先被編譯成一種稱為il<br>
(intermediate language)的偽代碼(pseudo-code)。在這個應用程序第一次<br>
被運行的時候,這種il代碼將被編譯成機器代碼,用于執行。也就是說從源代碼<br>
到得到運行結果,進行了兩次編譯。事實上,只有那些被真正使用的函數代碼<br>
才會被進行第二次編譯。下面揭示開發過程中被隱藏起來的細節:<br>
<br>
1) 你用c#開發一些程序<br>
2) 用c#編譯器或cls兼容的編譯器編譯成exe<br>
3) 編譯器將生成的il代碼和附加信息(manifest)放入擁有一個標準pe頭的win32<br>
&nbsp;&nbsp;&nbsp;可執行文件的只讀部分。<br>
4) 編譯器在創建這個可執行文件時導入(import)一個名為_corexemain的函數。<br>
&nbsp;&nbsp;&nbsp;這個函數是.net ee(execution engine)--.net運行期引擎的入口函數。<br>
5) 當執行這個win32可執行文件時,因為其主要是依賴于dll的pe文件,操作系<br>
&nbsp;&nbsp;&nbsp;統將會調用位于mscoree.dll中的_corexemain函數。<br>
6) 操作系統通過pe文件里的進入點,調用mscoree.dll。并能保證在windows里<br>
&nbsp;&nbsp;&nbsp;可以有很多程序同時運行。<br>
7) 因為操作系統不能執行.net il代碼,exe里的進入點只是簡單的中介,它將<br>
&nbsp;&nbsp;&nbsp;指示操作系統調用_corexemain函數。<br>
8) 隨后_corexemain函數開始解釋位于pe文件中的il代碼。<br>
9) 因為il是不能被直接執行的, .net ee使用稱為jitter (just in time compiler)<br>
&nbsp;&nbsp;&nbsp;的即時編譯器將il代碼編譯成本地cpu機器代碼用于執行。這一即時編譯過程<br>
&nbsp;&nbsp;&nbsp;只在第一次執行的時候進行。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜昌市| 类乌齐县| 叶城县| 民和| 诏安县| 鹤壁市| 武义县| 清新县| 屏东县| 墨脱县| 康马县| 平利县| 思南县| 闽清县| 彭州市| 渭南市| 四会市| 上虞市| 上栗县| 丹巴县| 吉林省| 美姑县| 西乌| 巴林左旗| 安龙县| 乌鲁木齐县| 高阳县| 灵寿县| 天津市| 酉阳| 留坝县| 忻城县| 台山市| 镇江市| 武川县| 文昌市| 仪陇县| 澄江县| 罗田县| 富平县| 洪江市|