亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

帶著問題讀CLR via C#(筆記一)CLR的執行模型

2020-01-24 03:29:59
字體:
來源:轉載
供稿:網友

Q1: 什么是CLR?

A1: CLR (Common Language Runtime) 是一個可以由多種編程語言使用的“運行時”。

Q2: CLR的核心功能有哪些?

A2: 1)內存管理;2)程序集加載;3)安全性;4)異常處理;5)線程同步

Q3: CLR與使用的編程語言有關嗎?

A3: 無關。只要編譯器是面向CLR的就行。

Q4: 選用不同編程語言經過面向CLR的編譯器編譯后生成的結果相同嗎?

A4: 相同。無論選擇什么語言,相應的編譯器變異的結果都是一個托管模塊,即一個標準的32位PE (Portable Executable) 32文件或64位PE32+文件。它們都需要CLR才能執行。

Q5: 托管模塊的組成部分是什么,它們的作用分別是什么?

A5: 1)PE32或PE32+頭;2)CLR頭;3)元數據;4)中間語言

PE32頭:1)標識了文件類型(GUI, CUI, DLL);2)包含一個文件生成時間的時間標記;3)包含與本地CPU代碼有關的信息(在該模塊包含CPU代碼的情況下)。

CLR頭:1)包含需要的CLR版本;2)托管模塊入口方法的MethodDef元數據標記;3)模塊的元數據,資源,強名稱,一些標記以及不太重要的數據項的位置及大小。

元數據:1)包含描述源代碼中定義的類型及成員的元數據表;2)包含描述源代碼中引用的類型和成員。

中間語言:編譯器編譯源代碼生成的代碼,運行時會被CLR編譯為本地CPU指令。

Q6: 什么是程序集?

A6: 程序集是一個抽象的概念,它是一個或多個模塊/資源文件的邏輯分組,也是重用,安全性以及版本控制的最小單元。 生成的程序集既可以是一個可執行文件(exe)也可以是一個DLL.

Q7: 托管模塊和程序集之間的關系是什么?

A7: 默認情況下,編譯器實際會把生成的托管模塊轉換為程序集,程序集的清單中會指明該程序集僅有一個文件構成。如果項目中只有一個托管模塊,沒有資源文件或數據文件,那么程序集就是托管模塊。如果想將多個文件合并到一個程序集,則需要使用其他工具來實現。

Q8: 方法執行的過程是什么?首次執行和之后執行有區別嗎?

A8: 執行一個方法需要將程序集中的IL轉換為本地CPU指令,這項工作由CLR的JIT(即時)編譯器來完成。用如下例子講解:

復制代碼 代碼如下:

static void Main()
{
    Console.WriteLine("Hello");
    Console.WriteLine("GoodBye");
}

分析準備階段:

1)      CLR檢測Main代碼引用的所有類型,此例中為Console類型;

2)      CLR分配一個內部數據結構,用于管理對引用的類型(即Console類型)的訪問。Console類型中的所有方法在這個內部結構中都有一個入口, 通過該入口可以找到方法的具體實現;對該內部結構初始化時,CLR將每個方法的入口都設置成指向JITCompiler函數(CLR內部未文檔化的一個函數);

執行階段:

1)      Main方法中首次調用WriteLine方法時,JITCompiler函數會被調用,這個函數知道調用的是哪個方法(WriteLine),以及什么類型(Console)調用了該方法;

2)      JITCompiler在定義了該類型的程序集元數據中查找該方法(WriteLine)的IL,并對IL進行驗證,若無誤,則將該IL編譯為本地CPU指令;

3)      將本地CPU指令保存至一個動態分配的內存塊;

4)      JITCompiler返回最初為Console類型創建的內部結構,找到WriteLine方法的入口,并將之前設置的指向JITCompiler的引用改為指向保存本地CPU指令的內存塊;

5)      JITCompiler回到保存本地CPU指令的內存塊,并執行該指令。

當Console.WriteLine("Hello")執行結束后,繼續執行下一行代碼Console.WriteLine("Goodbye"),由于Console.WriteLine方法已經編譯為本地CPU指令了,就會跳過JITCompiler函數的繁瑣操作,直接執行本地CPU代碼。但當應用程序終止后再次啟動運行這段代碼,JIT編譯器必須重新將IL編譯為本地CPU指令,因為之前是保存在內存塊中的,程序終止后內存塊會被清空。

Q9: IL有什么優勢?

A9: IL可以提高應用程序的健壯性和安全性。在將IL編譯為本地CPU指令時,CLR會執行驗證過程,確保代碼做的一切都是安全的(參數數量是否正確,參數類型是否正確,返回值是否被正確使用等等)。

Q10: 比較CLR, CTS和CLS.

A10: CLR是一個可以由多種編程語言使用的“運行時”, 它是圍繞類型展開的,類型為應用程序和其他類型公開了功能,通過類型,可以用一種編程語言系的代碼和另一種編程語言寫的代碼進行溝通,而CTS則是一個”通用類型系統”,它描述了類型的定義和行為。而由于CLR允許一種語言使用另一種語言定義的類型,但各種編程語言存在極大的區別,例如有些語言區分大小寫而有些語言不區分,CLS是一個 ”公共語言規范”, 它定義了一個最小功能集,用一種語言定義了一種類型時,若想要其他語言可以使用該類型,就不要在該類型的public和protected成員中使用超出CLS的功能。每種編程語言都提供了CLR/CTS的一個子集以及CLS的一個超集。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩电影中文字幕在线| 欧美一级大片在线免费观看| 亚洲va男人天堂| 国产精品成人播放| 日韩av影视综合网| 国产精品a久久久久久| 国产欧美日韩亚洲精品| 日韩精品亚洲精品| 77777少妇光屁股久久一区| 国产精品美女在线观看| 亚洲第一页在线| 国产91精品网站| 夜夜躁日日躁狠狠久久88av| 欧美激情欧美激情在线五月| 欧美视频二区36p| 日韩视频第一页| 成人免费淫片aa视频免费| 国产精品久久久久国产a级| 日韩av综合中文字幕| 九九精品在线视频| 精品亚洲国产视频| 亚洲电影免费观看高清完整版在线| 国产99久久精品一区二区永久免费| 国产精品∨欧美精品v日韩精品| 中文字幕久久久av一区| 久久久久久亚洲| 中文字幕综合一区| 亚洲性视频网站| 日韩高清电影好看的电视剧电影| 国产一区二区日韩精品欧美精品| 日本欧美在线视频| 国产精品91视频| 国产不卡一区二区在线播放| 国产精品久久久久999| 国产精品老女人视频| 国产精品激情av电影在线观看| 九九精品在线视频| 国产精品免费观看在线| 欧美日韩在线视频一区二区| 成人黄色中文字幕| 久久精品国产亚洲精品| 亚洲xxxx3d| 国产精品一区久久久| 中文字幕av一区中文字幕天堂| 九九九久久久久久| 日韩精品极品在线观看播放免费视频| 成人黄色av播放免费| 亚洲欧美日韩天堂一区二区| 91久热免费在线视频| 日韩www在线| 麻豆一区二区在线观看| 国产精品永久免费在线| 久久久久久网站| 91在线观看免费网站| 欧美日韩国产限制| 国模吧一区二区三区| 在线观看不卡av| 欧美日韩国产二区| 中国日韩欧美久久久久久久久| 久久影视电视剧凤归四时歌| 自拍视频国产精品| 亚洲最大成人免费视频| 亚洲精品综合精品自拍| 亚洲男女性事视频| 久久精品国产96久久久香蕉| 国产欧美精品xxxx另类| 国产在线a不卡| 亚州av一区二区| 尤物九九久久国产精品的特点| 亚洲无限乱码一二三四麻| 日本一区二区三区四区视频| 成人网址在线观看| 精品久久久久久久久久久久久久| 欧美理论电影在线播放| 国产欧美一区二区三区四区| 久久全球大尺度高清视频| 国产香蕉精品视频一区二区三区| 国产精品成人一区| 九九热精品在线| 久久综合网hezyo| 91极品女神在线| 久久免费视频在线观看| 国产精品美女www| 国产精品精品久久久久久| 欧美在线免费观看| 久精品免费视频| 欧美主播福利视频| 日韩av大片免费看| 久久久在线观看| 国产成人精品网站| 清纯唯美日韩制服另类| 91chinesevideo永久地址| 综合网日日天干夜夜久久| 亚洲已满18点击进入在线看片| 欧美理论电影网| 日韩电影免费在线观看| 国外成人在线播放| 精品高清一区二区三区| 91九色国产社区在线观看| 欧美高清电影在线看| 亚洲成人黄色网| 欧美日韩中文字幕在线视频| 亚洲一区二区三区sesese| 狠狠综合久久av一区二区小说| 精品久久久91| 日韩中文字幕精品| 久久久国产精品x99av| 国产国产精品人在线视| 国产亚洲精品一区二555| 97人人做人人爱| 国产精品av免费在线观看| 国产日韩精品视频| 在线观看国产精品淫| 国产精品久久久久久久久影视| 国产精品国产三级国产aⅴ浪潮| 日本久久中文字幕| 亚洲剧情一区二区| 亚洲一区亚洲二区| 伊人伊成久久人综合网站| 91免费的视频在线播放| 精品国产一区二区三区久久| 亚洲成人av资源网| 成人在线中文字幕| 欧美野外wwwxxx| 欧美日韩亚洲精品一区二区三区| 国产亚洲视频中文字幕视频| 精品在线观看国产| 亚洲free性xxxx护士白浆| 欧美激情免费看| 免费不卡在线观看av| 国产精品精品久久久久久| 97在线视频免费播放| 亚洲欧洲激情在线| 精品国内产的精品视频在线观看| 欧美午夜影院在线视频| 91美女福利视频高清| 欧美日韩精品在线视频| 欧美日韩亚洲国产一区| 91精品久久久久久久久久久| 国产欧美在线观看| 成人欧美一区二区三区在线湿哒哒| 欧美成人性色生活仑片| 国产精品爽爽爽| 亚洲自拍偷拍色片视频| 清纯唯美亚洲综合| 欧美激情亚洲精品| 国产99久久精品一区二区永久免费| 国产在线精品播放| 久久亚洲国产精品| 亚洲香蕉av在线一区二区三区| 亚洲视频精品在线| 欧美伊久线香蕉线新在线| 91精品久久久久久久| 欧美激情aaaa| 尤物99国产成人精品视频| 97精品视频在线| 亚洲天堂久久av| 亚洲伊人成综合成人网| 欧美诱惑福利视频| 日韩av手机在线观看| 草民午夜欧美限制a级福利片| 91精品国产色综合久久不卡98| 国产成+人+综合+亚洲欧美丁香花| 91在线看www|