【CLR的执行模型:将源代码编译成托管模块】
CLR:由多種不同編程語(yǔ)言使用的運(yùn)行庫(kù)
托管模塊:中間語(yǔ)言和元數(shù)據(jù)
非托管語(yǔ)言:C/C++,不過此為特殊,可以寫成托管代碼
托管語(yǔ)言:C#
?
托管模塊
1,PE32/PE32+頭:PE32運(yùn)行在win32位系統(tǒng)中,win32+運(yùn)行在64位系統(tǒng)
2,CLR頭,包括CLR版本,方法入口main,元數(shù)據(jù)標(biāo)記,元數(shù)據(jù),資源,名稱
3,IL代碼:CLR將IL編譯成本地cpu指令
圖:
?
總結(jié):在net的CLR(公共語(yǔ)言運(yùn)行庫(kù))中包括托管語(yǔ)言(C#)和非托管語(yǔ)言(例如C++),兩者到底什么區(qū)別.下面以數(shù)組為例
C#初始化數(shù)組不必考慮內(nèi)存分配問題,如果你用反匯編工具可以看到IL代碼,會(huì)自動(dòng)分配內(nèi)存大小
C++則與此不同,你需要事前分配合適大小再去處理
其次,CLR到底干嘛的?比如異常處理程序,你可以用C/c++/VB/C#/F#等不同語(yǔ)言編程,但是最終都要通過相應(yīng)的編譯器編譯成IL(中間語(yǔ)言),然后調(diào)用底層異常處理程序。其為公用的一類程序倉(cāng)庫(kù)。整個(gè)源代碼編譯成托管模塊的過程是,源代碼(C#)在完成后,運(yùn)行時(shí)經(jīng)過相應(yīng)的(C#)編譯器編譯成中間語(yǔ)言,生成相應(yīng)托管模塊(中間語(yǔ)言和元數(shù)據(jù))的 整個(gè)過程
轉(zhuǎn)載于:https://www.cnblogs.com/baiboy/archive/2013/03/04/2942597.html
總結(jié)
以上是生活随笔為你收集整理的【CLR的执行模型:将源代码编译成托管模块】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css中绝对定位中的left和top属性
- 下一篇: linux创建用户并授予sudo权限