天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

理解.NET程序集的執(zhí)行過程

  對于一個已編譯好的.NET程序集,Windows操作系統(tǒng)是如何啟動執(zhí)行的呢?日常使用中我們發(fā)現(xiàn)對于托管的和非托管的程序集編譯器都會吧程序集編譯成以.exe或.dll等為擴展名的文件,可見Windows加載器并沒有區(qū)分是托管還是非托管的程序集,而且我們也知道對非托管的程序集是在編譯器直接編譯成了機器碼,自然可以由CPU直接執(zhí)行,而托管的.NET 程序集是包含復雜結(jié)構(gòu)的MSIL代碼,執(zhí)行時會使用JIT即時編譯器將IL代碼編譯成機器碼,再由CPU執(zhí)行,當然這期間還需要執(zhí)行其它許多的工作,如加載CLR、執(zhí)行初始化等工作,那么這些是怎么自動實現(xiàn)的呢?

  理解這些問題是我們深入.NET的關鍵,由于日常的開發(fā)工作并不涉及這些知識(編譯器已經(jīng)給我們做了),結(jié)果是很多的.NET 書忽略了這一點,也很少有人研究者方面的內(nèi)容,所以在閱讀了《.NET 高級調(diào)試》這本書給了我非常清晰地認識,把里面的這方面精彩的內(nèi)容做了一個總結(jié)以供那些還沒有清楚.NET 程序集如何執(zhí)行的學者們一個簡單的參考。

  首先我們要清楚的是對于托管還是非托管程序集,他們在編譯器執(zhí)行編譯時都會編譯成一個特殊的文件格式,即PE文件(可移植可執(zhí)行文件格式),操作系統(tǒng)加載器通過加載這樣的PE文件來執(zhí)行程序集的??梢赃@么說吧,無論是托管程序還是非托管程序他們實際上都是編譯成這樣的PE文件(只是有部分內(nèi)容不一樣而已)。

  然后這個PE文件會指示如何執(zhí)行托管程序集和非托管程序集,加載器首先會查找到PE頭中的AddressOfEntryPoint域,這個域指示PE文件的入口點位置,在.NET程序集中是指向.text段中的CLR頭--〉包含一個結(jié)構(gòu)IMAGE_COR20_HEADER—包含許多信息如托管代碼應用程序的入口點,目標CLR的主版本號和從版本號,以及程序集的強名稱簽名等--〉Windows加載器根據(jù)這個數(shù)據(jù)結(jié)構(gòu)決定加載哪個版本的CLR以及一些基本的程序集信息。在.text段中還包含了程序集的元數(shù)據(jù)表,MSIL以及非托管啟動存根代碼,而非托管啟動存根代碼包好了由Windows加載器執(zhí)行役啟動PE文件執(zhí)行的代碼,結(jié)構(gòu)如圖所示。

圖片2

  這樣.NET 程序集的加載算法包括:

  1、用戶執(zhí)行一個.NET程序集;

  2、Windows加載器查看AddressOfEntryPoint域,并找到PE映像文件的.text段;

  3、位于AddressOfEntryPoint位置上的字節(jié)只是一個JMP(跳轉(zhuǎn))指令,這個指令跳轉(zhuǎn)到mscoree.dll中的一個導入函數(shù);

  4、將執(zhí)行控制轉(zhuǎn)移到mscoree.dll中的_CorExeMain中,這個函數(shù)將啟動CLR并把執(zhí)行控制轉(zhuǎn)移到程序集的入口點。

NET技術理解.NET程序集的執(zhí)行過程,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 人人澡人人擦人人免费 | 美女黄图大全 | 他揉捏她两乳不停呻吟口述 | 成人精品视频网站 | 4虎影院午夜在线观看 | 免费播放美女一级毛片 | 九九99国产香蕉视频 | 亚洲男女羞羞无遮挡久久丫 | 亚洲精品中文字幕无码A片蜜桃 | 樱桃熟了A级毛片 | 国产成人拍精品视频网 | 少妇一夜未归暴露妓女身份 | 灌满内射HP1V1 | 午夜成a人片在线观看 | 91av成年影院在线播放 | 亚洲日韩中文字幕区 | 午夜片神马影院福利 | 在线 无码 中文 强 乱 | 欧美肥胖女人bbwbbw视频 | 青柠在线观看视频在线 | 用快播看av的网站 | 伦理 电影在线观看 | 亚洲第一天堂无码专区 | 成人性生交片无码免费看 | 亚洲AV综合色一区二区三区 | 国产在线精品亚洲第1页 | 亚洲日产2020乱码草莓毕 | 久久机热视频 这里只有精品首页 | 动漫美女被羞羞动漫怪物 | 国产传媒在线观看 | 末成年美女黄网站色大片连接 | 超碰免费视频caoporn | chinese帅哥gv在线看 | 欧美 亚洲 日韩 在线综合 | 国产亚洲精品久久久999密臂 | 51国产午夜精品免费视频 | 搡女人免费免费视频观看 | 久青草国产观看在线视频 | 狠狠色狠狠色综合日日92 | 国产69精品久久久久乱码韩国 | 40岁东北老阿姨无码 |