最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#源碼的執(zhí)行過程詳解

 更新時(shí)間:2018年07月29日 10:40:15   作者:張三你好  
在本篇文章中給大家詳細(xì)講述了c#源碼的執(zhí)行過程,對此有需要的朋友們可以學(xué)習(xí)下。

要講到C#源碼的執(zhí)行過程 首先要提下程序集,因?yàn)镃lr并不是和托管摸塊打交道的,而是和程序集(dll,exe)

1、從哪里來

程序集是由一個(gè)或者多個(gè)托管模塊以及 資源文件等共同組成的,C#編譯器(csc.exe)再把源碼編程成IL代碼和元數(shù)據(jù)的時(shí)候,會進(jìn)一步連同資源文件合并成程序集,

實(shí)際上就是個(gè)PE32文件,里面包含一個(gè)清單文件 和多個(gè)托管模塊和資源(如圖),另外程序集中還有一些自描述信息。

2、執(zhí)行過程

編譯器生成好程序集以后,如果是可執(zhí)行的程序集,會在Main方法執(zhí)行之前,window會預(yù)先讀取程序集的頭文件(pe32),如果是x86則開一個(gè)32位的進(jìn)程,x64的就開一個(gè)64位的進(jìn)程

然后在進(jìn)程空間里面加載MSCOREE.DLL的x86 或者x64版本或者arm版本,然后進(jìn)程的主線程會調(diào)用MSCOREE.DLL的一個(gè)方法,初始化Clr,而Clr會加載程序集exe,再調(diào)用其入口方法Main。

3.Main方法內(nèi)部執(zhí)行

在Main執(zhí)行之前,Clr 會檢測出方法引用的所有類型,(Console),然后在內(nèi)存中分配對應(yīng)數(shù)據(jù)類型的空間,這個(gè)地址里面包含著這個(gè)類型所有的方法聲名,每一項(xiàng)都對應(yīng)著Clr里面的一個(gè)未編檔函數(shù)(JITCompiler)

首次運(yùn)行Main方法的試試JITCompiler會被調(diào)用,在這個(gè)方法里面1,負(fù)責(zé)在方法的實(shí)現(xiàn)類型中(console)程序集元數(shù)據(jù)中查詢該方法的IL方法 2,動(dòng)態(tài)分配內(nèi)存塊 3,把IL編譯成本機(jī)Cpu的指令,存儲到動(dòng)態(tài)分配的空間里面

4,修改這個(gè)條目的地址,使它指向動(dòng)態(tài)分配的地址 5.跳轉(zhuǎn)到內(nèi)存塊中的本機(jī)代碼執(zhí)行,這時(shí)候執(zhí)行的就是IL代碼的cpu機(jī)器碼

5.在次執(zhí)行Console.WriteLine的時(shí)候,就不會運(yùn)行JITCompiler,直接運(yùn)行機(jī)器碼

相關(guān)文章

  • C#實(shí)現(xiàn)圖形位置組合轉(zhuǎn)換的方法

    C#實(shí)現(xiàn)圖形位置組合轉(zhuǎn)換的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)圖形位置組合轉(zhuǎn)換的方法,涉及C#使用Matrix操作圖形的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C#中TextBox的橫線樣式及占位提示詳解

    C#中TextBox的橫線樣式及占位提示詳解

    橫線樣式就是將TextBox以一條底橫線的形式展示在頁面,占位提示就是Web的Placeholder屬性,即在輸入框沒有內(nèi)容的時(shí)候進(jìn)行一個(gè)輸入提示。本文主要介紹了C#中TextBox的這兩個(gè)的實(shí)現(xiàn),需要的可以參考一下
    2022-11-11
  • C#實(shí)現(xiàn)軟件監(jiān)控外部程序運(yùn)行狀態(tài)的方法

    C#實(shí)現(xiàn)軟件監(jiān)控外部程序運(yùn)行狀態(tài)的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)軟件監(jiān)控外部程序運(yùn)行狀態(tài)的方法,可實(shí)現(xiàn)監(jiān)控另一個(gè)程序的運(yùn)行狀態(tài)及觸發(fā)相應(yīng)事件的功能,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • c#多進(jìn)程通訊的實(shí)現(xiàn)示例

    c#多進(jìn)程通訊的實(shí)現(xiàn)示例

    本文主要介紹了c#多進(jìn)程通訊的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 帶你一文了解C#中的LINQ

    帶你一文了解C#中的LINQ

    c#提供的ling查詢極大的遍歷了集合的查詢過程,且使用簡單方便,非常的有用,下面這篇文章主要給大家介紹了關(guān)于C#中LINQ的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • C# 計(jì)算標(biāo)準(zhǔn)偏差相當(dāng)于Excel中的STDEV函數(shù)實(shí)例

    C# 計(jì)算標(biāo)準(zhǔn)偏差相當(dāng)于Excel中的STDEV函數(shù)實(shí)例

    下面小編就為大家?guī)硪黄狢# 計(jì)算標(biāo)準(zhǔn)偏差相當(dāng)于Excel中的STDEV函數(shù)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • C#使用讀寫鎖三行代碼簡單解決多線程并發(fā)的問題

    C#使用讀寫鎖三行代碼簡單解決多線程并發(fā)的問題

    本文主要介紹了C#使用讀寫鎖三行代碼簡單解決多線程并發(fā)寫入文件時(shí)提示“文件正在由另一進(jìn)程使用,因此該進(jìn)程無法訪問此文件”的問題。需要的朋友可以參考借鑒
    2016-12-12
  • C#使用正則表達(dá)式抓取網(wǎng)站信息示例

    C#使用正則表達(dá)式抓取網(wǎng)站信息示例

    這篇文章主要介紹了C#使用正則表達(dá)式抓取網(wǎng)站信息,結(jié)合實(shí)例形式分析了C#針對網(wǎng)頁信息的正則抓取操作相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • C#中線程安全問題的調(diào)試和解決

    C#中線程安全問題的調(diào)試和解決

    在C#中,多線程編程是一種常見且強(qiáng)大的工具,但它帶來了線程安全的問題,本文將介紹如何調(diào)試和解決C#中的線程安全問題,并深入探討鎖機(jī)制、并發(fā)控制以及調(diào)試的最佳實(shí)踐,需要的朋友可以參考下
    2025-03-03
  • Unity實(shí)現(xiàn)簡單虛擬搖桿

    Unity實(shí)現(xiàn)簡單虛擬搖桿

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)簡單虛擬搖桿,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評論

吉安县| 余姚市| 克东县| 应用必备| 南部县| 新乡县| 海兴县| 育儿| 高安市| 鲁山县| 东海县| 新安县| 布拖县| 东安县| 百色市| 读书| 巴彦县| 城市| 鄂托克前旗| 庆元县| 宁陵县| 班戈县| 柳江县| 灵山县| 游戏| 当雄县| 新兴县| 化隆| 马鞍山市| 南皮县| 沙洋县| 乌海市| 富民县| 信阳市| 普安县| 台州市| 邯郸市| 石台县| 分宜县| 安陆市| 陇西县|