人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

精品賞析:一個.NET程序在編譯與運行時都做了些啥?

精品賞析:一個.NET程序在編譯與運行時都做了些啥?

更新時間:2022-06-27 文章作者:未知 信息來源:網絡 閱讀次數:

一個.NET程序在編譯和運行時都做了些什么?
================================================================
在新聞組和郵件列表里有大量關于一個.Net程序的設計編譯(design-time or
run-time)和運行原理 (CPU-specific binary or pseudo-code)的疑問。

這里是一個簡單的回答:當你編譯一個C#應用程序或任何一種CLS(Commmon
Language Specification)兼容的語言時,它將首先被編譯成一種稱為IL
(Intermediate Language)的偽代碼(pseudo-code)。在這個應用程序第一次
被運行的時候,這種IL代碼將被編譯成機器代碼,用于執行。也就是說從源代碼
到得到運行結果,進行了兩次編譯。事實上,只有那些被真正使用的函數代碼
才會被進行第二次編譯。下面揭示開發過程中被隱藏起來的細節:

1) 你用C#開發一些程序
2) 用C#編譯器或CLS兼容的編譯器編譯成EXE
3) 編譯器將生成的IL代碼和附加信息(manifest)放入擁有一個標準PE頭的Win32
可執行文件的只讀部分。
4) 編譯器在創建這個可執行文件時導入(import)一個名為_CorExeMain的函數。
這個函數是.NET EE(execution engine)--.NET運行期引擎的入口函數。
5) 當執行這個Win32可執行文件時,因為其主要是依賴于DLL的PE文件,操作系
統將會調用位于MSCorEE.DLL中的_CorExeMain函數。
6) 操作系統通過PE文件里的進入點,調用MSCorEE.DLL。并能保證在Windows里
可以有很多程序同時運行。
7) 因為操作系統不能執行.NET IL代碼,EXE里的進入點只是簡單的中介,它將
指示操作系統調用_CorExeMain函數。
8) 隨后_CorExeMain函數開始解釋位于PE文件中的IL代碼。
9) 因為IL是不能被直接執行的, .NET EE使用稱為JITter (Just In Time compiler)
的即時編譯器將IL代碼編譯成本地CPU機器代碼用于執行。這一即時編譯過程
只在第

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 北票市| 富源县| 邻水| 苗栗市| 亚东县| 保靖县| 荆州市| 绥芬河市| 淮阳县| 读书| 昔阳县| 东安县| 建瓯市| 深圳市| 珲春市| 达尔| 井冈山市| 紫阳县| 朝阳区| 昭平县| 安化县| 湘阴县| 南通市| 韶关市| 旬阳县| 于都县| 隆尧县| 镇巴县| 黎川县| 闻喜县| 含山县| 蕲春县| 黄浦区| 龙州县| 乌兰察布市| 海口市| 中阳县| 南丹县| 永济市| 榆树市| 陆丰市|