韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

第二章 NGWS Runtime 技術(shù)基礎(chǔ)(rainbow 翻譯)

第二章 NGWS Runtime 技術(shù)基礎(chǔ)(rainbow 翻譯)

更新時(shí)間:2021-03-06 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

第二章 NGWS runtime 技術(shù)基礎(chǔ)

既然你已經(jīng)具有了C#全面的印象,我也想讓你了解NGWS runtime的全貌。C#依靠由NGWS提供的運(yùn)行時(shí);因此,有必要
知道運(yùn)行時(shí)如何工作,以及它背后所蘊(yùn)含的概念。
所以,這一章分為兩部分——它們是所有的概念和使用的基礎(chǔ)。兩部分的內(nèi)容雖然有些重疊,但它有助于加深理解正
在學(xué)習(xí)的概念。

2.1 NGWS Runtime
NGWS和NGWS Runtime為你提供了一種運(yùn)行時(shí)環(huán)境。該運(yùn)行時(shí)管理執(zhí)行代碼,并提供了使編程更容易的服務(wù)。只要你的
編譯器支持這種運(yùn)行時(shí),你就會(huì)從這種受管理的執(zhí)行環(huán)境中得益。
你猜測C#編譯器支持NGWS runtime很正確,但是不僅它支持NGWS runtime,VB和C++也支持。這些為支持運(yùn)行時(shí)所創(chuàng)建
的代碼稱作"受管代碼"(managed code)。以下是你的應(yīng)用程序從NGWS runtime那里所得到的利益:

交叉語言集成(通過通用語言規(guī)范)
自動(dòng)內(nèi)存管理(垃圾收集)
交叉語言異常處理(統(tǒng)一展開)
增強(qiáng)安全(包括類型安全)
版本支持("DLL地獄"終結(jié)者)
組件交互簡化模式

因NGWS runtime 要提供了所有的這些好處,編譯器必須把元文件和受管代碼一起發(fā)出。元文件描述代碼中的類型,它
和你的代碼存在一起(與PE類似---PE為可變位執(zhí)行文件)
正如你從很多種交叉語言功能所看到的,NGWS runtime主要是關(guān)于高度集成交叉多異編程語言(tight integration
across multiple different programming languages)。這種支持可達(dá)到允許你從一個(gè)VB對象派生出一個(gè)C#類的程度(我后
面會(huì)給出要討論的文章)。
C#程序員將會(huì)喜歡的一個(gè)功能是,他們不必?fù)?dān)心內(nèi)存管理—也就是說不必?fù)?dān)心臭名昭著的內(nèi)存泄漏。NGWS runtime提
供了內(nèi)存管理,當(dāng)對象和變量的生命期結(jié)束(不再被引用)時(shí),垃圾收集器釋放它們。我真的喜歡這個(gè)功能,因?yàn)樵贑OM中的
內(nèi)存管理一直是我的一塊心病。
應(yīng)該鼓勵(lì)配置一個(gè)管理應(yīng)用程序或者組件。因?yàn)楣芾響?yīng)用程序含有元數(shù)據(jù)文件,NGWS runtime可以利用這些信息,以
確保你的應(yīng)用程序具有它所需的各種規(guī)定版本。所產(chǎn)生的明顯效果為,由于你的代碼沒有相互之間的依賴,很少可能出現(xiàn)
中斷。
這章余下來的將分為兩部分,每一部分討論NGWS runtime的各個(gè)方面,直到你的C#應(yīng)用程序能執(zhí)行為止。
1、中間語言(Intermediate Language,縮寫IL)和元數(shù)據(jù)
2、即時(shí)編譯器(just-in-time compliers,簡稱JITers)

2.1.1 中間語言和元數(shù)據(jù)
由C#編譯器生成的受管代碼并不是原始代碼,但它是中間語言(IL)代碼。這種IL代碼自身變成了NGWS runtime的受管
執(zhí)行進(jìn)程的入口。IL代碼明顯的優(yōu)勢在于它是CPU無關(guān)的,這也意味著,你要用目標(biāo)機(jī)器上的一個(gè)編譯器才能把IL代碼轉(zhuǎn)換
成原始代碼。
盡管IL代碼由編譯器產(chǎn)生,但它并不是編譯器提供給運(yùn)行時(shí)僅有的東西。編譯器同樣產(chǎn)生有關(guān)你代碼的元數(shù)據(jù),它告
訴運(yùn)行時(shí)有關(guān)你代碼的更多的東西,例如各種類型的定義、各種類型成員的簽名以及其它數(shù)據(jù)。基本上,元數(shù)據(jù)是類型
庫、注冊表內(nèi)容和其它用于COM的信息。盡管如此,元數(shù)據(jù)還是直接和執(zhí)行代碼合并在一起,并不處在隔離的位置。
IL和元數(shù)據(jù)存放于擴(kuò)展了PE格式的文件中(PE格式用于.exe和.dll文件)。當(dāng)這樣的一個(gè)PE文件被裝載時(shí),運(yùn)行時(shí)從文
件中定位和分離出元數(shù)據(jù)和IL。
在進(jìn)一步說明之前,我想給你已有的IL指令的簡短目錄。盡管它不是一個(gè)完整的清單,也不需要你熟記和理解,但是
它列出了你所必需的、C#程序所基于的知識(shí)基礎(chǔ)。

算術(shù)和邏輯操作符
控制流
直接內(nèi)存訪問
堆棧操作
參數(shù)和局部變量
堆棧分配
對象模式
實(shí)例類型值
臨界區(qū)
數(shù)組
分型位置
即時(shí)編譯器(JITters)

2.1.2 即時(shí)編譯器(JITters)
由C#或其它能產(chǎn)生受管代碼的編譯器所生成的受管代碼就是IL碼。雖然IL代碼被包裝在一個(gè)有效的PE文件中,但是你
還是不能執(zhí)行它,除非它被轉(zhuǎn)換成為受管原始代碼。這就是NGWS runtime 即時(shí)編譯器(也稱作JITters)大顯身手的時(shí)候。
為什么你會(huì)對即時(shí)編譯代碼感到厭繁, 為什么不把整個(gè)IL PE文件編譯成原始代碼? 答案是時(shí)間——需要把IL代碼編
譯成CPU規(guī)格的代碼的時(shí)間。這種編譯將更加有效率,因?yàn)橐恍┏绦蚨螐膩砭蜎]有被執(zhí)行過。例如,在我的字處理器中,郵
件合并功能從來就沒有被編譯。
從技術(shù)上說,全部的處理過程如下:當(dāng)一個(gè)類型被裝載時(shí),裝載器創(chuàng)建一個(gè)存根(stub),并使它連接每一個(gè)類型的方
法。當(dāng)一個(gè)方法第一次被調(diào)用時(shí),存根把控制交給JIT。JIT把IL編譯為原始代碼,且把存根指針指向緩沖了的原始代碼。
接著的調(diào)用將執(zhí)行原始碼。在某些位置上(At some point),所有的IL都被轉(zhuǎn)換成為原始代碼,而JITter處于空閑狀態(tài)。
正如我在前面提到的,JIT編譯器有很多,不止一個(gè)。在Windows平臺(tái)上,NGWS runtime裝有3個(gè)不同的JIT編譯器。
JIT——這是NGWS runtime默認(rèn)使用的JIT編譯器。它是一個(gè)后臺(tái)(back end)優(yōu)化的編譯器 ,在前臺(tái)(up front)實(shí)行數(shù)
據(jù)流分析,并創(chuàng)建了高度優(yōu)化的受管原始代碼做為輸出結(jié)果。JIT可以使用不嚴(yán)格的IL指令集編碼,但是所需資源將十分可
觀。主要的限制在于內(nèi)存足跡(footprint)、結(jié)果工作集,以及實(shí)行優(yōu)化所消耗的時(shí)間。
EconoJIT—— 和主JIT相比,EconJIT的目標(biāo)是把IL高速地轉(zhuǎn)換成受管原始代碼。它允許緩沖所產(chǎn)生的原始代碼,但是
輸出碼并不象主JIT生成的代碼那樣優(yōu)化(代碼小)。當(dāng)內(nèi)存緊張時(shí),快速代碼生成方案的優(yōu)勢將蕩然無存。通過永久地拋棄
無用的已JIT過的代碼,你可以把更大的IL程序裝入代碼緩沖區(qū)。因?yàn)镴IT編譯快,執(zhí)行速度也仍然很快。
PreJIT—盡管它是基于主JIT的,但操作起來更象是一個(gè)傳 統(tǒng)的編譯器。你安裝了NGWS組件,它才能運(yùn)行,才可以把
IL代碼編譯成受管原始代碼。當(dāng)然最終的結(jié)果為,更快的裝載時(shí)間和更快的應(yīng)用程序啟動(dòng)時(shí)間(不需要更多的JIT編譯)。
在所列出的JITters中,有兩個(gè)是運(yùn)行時(shí)的JITters?墒悄阍趺礇Q定要使用哪一個(gè)JIT,它如何使用內(nèi)存? 有一個(gè)稱
做"JIT編譯管理器"的小應(yīng)用程序(jitman.exe),它存放于NGWS SDK安裝目錄下的bin目錄中。當(dāng)執(zhí)行該程序時(shí),它把一個(gè)
圖標(biāo)加到系統(tǒng)任務(wù)條上,雙擊該圖標(biāo)打開程序?qū)υ捒?見圖2.1)。

圖2.1 JIT編譯管理器允許你設(shè)置各種相關(guān)性能的選項(xiàng)

盡管它是一個(gè)小小的對話框,可是你所選擇的選項(xiàng)功能是相當(dāng)強(qiáng)大的。每一個(gè)選項(xiàng)將在以下描述。
Use EconoJIT only 選項(xiàng)——當(dāng)該復(fù)選框沒有選上時(shí),NGWS runtime使用默認(rèn)的正常的JIT編譯器。前面就曾經(jīng)解釋過
兩種JITter的區(qū)別。
Max Code Pitch Overhead(%)選項(xiàng)——該設(shè)置僅保留給EconoJIT。它控制了JIT編譯時(shí)間和執(zhí)行代碼時(shí)間的百分比。如
果超過了設(shè)定的域值,代碼緩沖區(qū)得到擴(kuò)充,以縮短JIT編譯所消耗的時(shí)間。
Limit Size of Code Cache選項(xiàng)——該項(xiàng)默認(rèn)為非選。沒有選擇該項(xiàng)意味著緩沖區(qū)將使用它所能得到的內(nèi)存。如果你
想限制緩沖區(qū)大小,復(fù)選該選項(xiàng),這將允許你使用Max Size of Cache(bytes)選項(xiàng)。
Max Size of Cache(bytes)選項(xiàng)—控制容納JIT代碼的緩沖區(qū)的最大值。雖然你可以非常嚴(yán)格地限制這個(gè)值,但你
還是應(yīng)該小心,不能超過這個(gè)緩沖區(qū)所適合的最大值。否則該方法的JIT編譯將會(huì)失敗。
Optimize For Size選項(xiàng)——告訴JIT 編譯器,優(yōu)化的目的是為了使代碼更小而不是能執(zhí)行得更快。這個(gè)設(shè)置默認(rèn)是關(guān)
掉的。
Enable Concurrent GC[garbage collection]選 項(xiàng)——垃圾收集(GC)默認(rèn)地運(yùn)行在用戶代碼的線程中。意味GC發(fā)生
時(shí),可能會(huì)注意到回應(yīng)有輕微的延遲。為防止出現(xiàn)該現(xiàn)象,打開當(dāng)前GC。注意,當(dāng)前GC比標(biāo)準(zhǔn)GC更慢,它僅在windows
2000上寫時(shí)(the time of writing)有效。
當(dāng)用C#創(chuàng)建項(xiàng)目時(shí),你可能使用不同的設(shè)置試驗(yàn)過。當(dāng)創(chuàng)建 UI-intensive應(yīng)用程序時(shí),你將會(huì)看到允許當(dāng)前GC的最大
差別。

2.2 虛擬對象系統(tǒng)(VOS)
到目前為止,你僅看到了NGWS runtime如何工作,但是并不了解它工作的技術(shù)背景以及為什么它要這樣工作。這節(jié)都
是關(guān)于 NGWS 虛擬對象系統(tǒng)的(VOS)。
以下為在VOS中形成聲明、使用和管理類型模型時(shí),NGWS runtime的規(guī)則。在VOS背后的思想是建立一個(gè)框架,在執(zhí)行
代碼時(shí)不能犧牲性能,允許交叉語言集成和類型安全。
我提到的框架是運(yùn)行時(shí)架構(gòu)的基礎(chǔ)。為了幫助你更好地了解它,我將它勾出四個(gè)區(qū)域。當(dāng)開發(fā)C#應(yīng)用程序和組件時(shí),
理解它們很重要。
VOS類型系統(tǒng)——提供豐富的類型系統(tǒng),它打算支持全面編程語言的完全實(shí)施。
元數(shù)據(jù)——描述和引用VOS類型系統(tǒng)所定義的類型。元數(shù)據(jù)的永久格式與編程語言無關(guān),但是,元數(shù)據(jù)拿自己當(dāng)作一種
互換機(jī)制(nterchange mechanism)來使用,這種互換是在在工具和NGWS的虛擬執(zhí)行系統(tǒng)之間。
通用語言規(guī)范(CLS)——CLS定義了VOS中類型的子集,也定義了常規(guī)的用法。如果一個(gè)類庫遵守CLS的規(guī)則,它確保類
庫可以在其它所有能實(shí)現(xiàn)CLS的編程語言上使用。
虛擬執(zhí)行系統(tǒng)(VES)——這是VOS實(shí)時(shí)的實(shí)現(xiàn)。VES負(fù)責(zé)裝入和執(zhí)行為NGWS運(yùn)得時(shí)編寫的程序。
這四個(gè)部分一起組成了NGWS runtime架構(gòu)。每一部分在下面小節(jié)中描述。

2.2.1 VOS類型系統(tǒng)
VOS類型系統(tǒng)提供豐富的類型系統(tǒng),它打算支持多種編程語言的完全實(shí)施。所以,VOS必須都支持面向?qū)ο蟮恼Z言和過
程編程語言。
現(xiàn)在,存在著很多種近似但有點(diǎn)不兼容的類型。就拿整型當(dāng)例子,在VB中,它是16位長,而在C++中,它是32位。還有
更多的例子,特別是用在日期和時(shí)間以及數(shù)據(jù)庫方面的數(shù)據(jù)類型。這種不兼容使應(yīng)用程序的創(chuàng)建和維護(hù)不必要地復(fù)雜化,
尤其當(dāng)程序使用了多種編程語言時(shí)。
另一個(gè)問題是,因?yàn)榫幊陶Z言之間存在著一些差別,你不能在一種語言中重用另一種語言創(chuàng)建的類型。(COM用二進(jìn)制
標(biāo)準(zhǔn)接口部分地解決了這個(gè)問題)。 當(dāng)今代碼重用肯定是有限的。
發(fā)布應(yīng)用程序的最大障礙是各種編程語言的對象模型不統(tǒng)一。幾乎每一方面都存在著差異:事件、屬性、永久保存
(persistence)等等。
VOS這里將改變 這種現(xiàn)象 。VOS定義了描述值的類型,并規(guī)定了類型的所有值所必須支持的一條合約。由于前面提到
的支持面向?qū)ο蠛瓦^程編程語言,就存在著兩種值和對象。

對于值,類型存儲(chǔ)于表述(representation)中,同樣操作也在其中實(shí)行。對象更強(qiáng)大因?yàn)樗@式地存于表述中。每一
個(gè)對象都有一個(gè)區(qū)別于其它對象的識(shí)別號(hào)。支持不同的VOS類型在第四章 "C#類型"中提出。


2.2.2元數(shù)據(jù)
盡管元數(shù)據(jù)用于描述和引用由VOS類型系統(tǒng)定義的類型,但它還不能鎖定到這個(gè)單個(gè)目標(biāo)。當(dāng)你寫一個(gè)程序時(shí),通過利
用類型聲明,你所聲明的類型(假定它們是數(shù)值類型或引用類型)被介紹給NGWS runtime類型系統(tǒng)。類型聲明在存于PE可執(zhí)
行文件內(nèi)部的元數(shù)據(jù)中得到描述。
基本上,元數(shù)據(jù)用于各項(xiàng)任務(wù):用于表示NGWS runtime用途的信息,如定位和裝載類、 內(nèi)存中這些類的事例、解決
調(diào)用 、翻譯IL為原始碼、加強(qiáng)安全并設(shè)置運(yùn)行時(shí)上下文邊界。
你不必關(guān)心元數(shù)據(jù)的生成。元數(shù)據(jù)是由C#的"代碼轉(zhuǎn)IL編譯器"(code-to-IL compiler,不是JIT編譯器)生成的。代碼轉(zhuǎn)
IL編譯器發(fā)送二進(jìn)制元數(shù)據(jù)信息給PE文件,是以標(biāo)準(zhǔn)的方式發(fā)送的,不象C++編譯器那樣,為出口函數(shù)創(chuàng)建它們自己的修飾
名字。
你從元數(shù)據(jù)和可執(zhí)行代碼并存所獲得的主要優(yōu)勢為,有關(guān)類型的信息同類型自身固定在一起,不會(huì)遍布很多地方。同
樣有助于解決存在于COM中的版本問題。進(jìn)一步地,你可以在相同的上下文中使用不同的版本庫,因?yàn)閹觳粌H被注冊表引
用,也被包含在可執(zhí)行代碼中的元數(shù)據(jù)引用。


2.2.3通用語言規(guī)范
通用語言規(guī)范(CLS)并不是虛擬對象系統(tǒng)(VOS)真正的一部分,它是特殊的。CLS定義了VOS中的一個(gè)類型子集,也定義
了必須符合CLS的常規(guī)用法。
那么,對此有什么迷惑呢?如果一個(gè)類庫遵守CLS規(guī)則,其它編程語言同樣也遵守CLS規(guī)則,那么其它編程語言的客戶也
可以使用類庫。CLS是關(guān)于語言的交互可操作性(interoperability)。因此,常規(guī)用法必須僅遵循外部可訪問項(xiàng)目
(externally visible items)如方法、屬性和事件等等。
我所描述的優(yōu)點(diǎn)是你可以做以下工作。用C#寫一個(gè)組件,在VB中派生它,因加在VB中的功能是如此之強(qiáng)大,在C#中再
次從VB類派生它。只要所有的外部可訪問項(xiàng)遵守CLS規(guī)則,這樣是可行的。
我在這本書中出示的代碼不關(guān)心CLS協(xié)定。但在構(gòu)建你的類庫時(shí)要注意到CLS協(xié)定。我提供了表2.1,用以給類型和外部
可訪問項(xiàng)定義協(xié)定規(guī)則。
這個(gè)清單不完整。它僅包含一些很重要的項(xiàng)目。我不指出出現(xiàn)在本書中每一種類型的CLS協(xié)定,所以有個(gè)好主意:當(dāng)你
尋找CLS協(xié)定時(shí),至少應(yīng)該用瀏覽該表,以了解哪種功能有效。不要擔(dān)心你不熟悉這章表中的每一個(gè)含義,在這本書中你會(huì)
學(xué)到它們。

表2.1 通能語言規(guī)范中的類型和功能

bool
char
byte
short
int
long
float
double
string
object(所有對象之母)

Arrays(數(shù)組)
數(shù)組的維數(shù)必須是已知的(>=1),而且最小下標(biāo)數(shù)必須為0。
要素類型必須是一個(gè)CLS類型。

類型(Types)
可以被抽象或隱藏。
零或更多的接口可以被實(shí)現(xiàn)。不同的接口允許擁有具有相同名字和簽名的方法。
一個(gè)類型可以準(zhǔn)確地從一個(gè)類型派生。允許成員被覆蓋和被隱藏。
可以有零或更多的成員,它們是字段(fields)、方法、事件或者類型。
類型可以擁有零或更多個(gè)構(gòu)造函數(shù)。
一種類型的可訪問性可以是公共的或者對NGWS組件來說是局部的;但是,僅公共成員可以認(rèn)為是類型接口的一部分。
所有的值型必須從系統(tǒng)值型繼承。異常是一個(gè)枚舉——它必須從系統(tǒng)枚舉(System Enum)繼承。

類型成員
類型成員允許隱藏或者覆蓋另一種類型中的其它成員。
參數(shù)和返回值的類型都必須是 CLS 協(xié)定 類型。
構(gòu)造函數(shù)、方法和屬性可以被重載。
一個(gè)類型可以有抽象成員,但僅當(dāng)類型不被封裝時(shí)。

方法
一種方法可以是靜態(tài)、虛擬或者實(shí)例。
虛擬和實(shí)例方法可以是抽象的,或者是一個(gè)實(shí)現(xiàn)。靜態(tài)方法必須總擁有一個(gè)實(shí)現(xiàn)。
虛擬方法可能是最后的(或者不是)。

字段(Fields)
可以是靜態(tài)或者是非靜態(tài)。
靜態(tài)字段可以被描述或只初始化。

屬性
當(dāng)獲取和設(shè)置方法而不是使用屬性語法時(shí),屬性可以公開。
獲取的返回類型和設(shè)置方法的第一個(gè)參數(shù)必須是相同的CLS類型——屬性的類型。
屬性名字必須不同,不同的屬性類型用于區(qū)分是不充分的。
由于使用方法實(shí)現(xiàn)屬性訪問,如果 PropertyName 是同一個(gè)類中定義的一個(gè)屬性,你不能實(shí)現(xiàn)命名為
get_PropertyName 和 set_PropertyName 的方法。
屬性可以被索引。
屬性訪問必須遵循這種命名格式:get_ProName,set_PropName。

枚舉(Enumerations)
強(qiáng)調(diào)類型必須是byte、short、int 或long。
每一個(gè)成員是一個(gè)枚舉類型的靜態(tài)描述字段。
一個(gè)枚舉不能實(shí)現(xiàn)任何接口。
你允許給多字段設(shè)定相同的值。
一個(gè)枚舉必須繼承系統(tǒng)枚舉(隱含在C#中)

異常
可以被引發(fā)和被捕獲。
自定義異常必須繼承系統(tǒng)異常。

接口
可需要實(shí)現(xiàn)其它接口。
一個(gè)接口可以定義屬性、事件和虛擬方法。實(shí)現(xiàn)取決于派生類。

事件
增加和取消方法必須是都提供或者都沒有 ,每一種方法采用一個(gè)參數(shù),它是一個(gè)從系統(tǒng)代表元(System Delegate)派
生下來的類。

自定義屬性
可以僅使用下更類型:Type(類型),char, char, bool, byte, short, int, long, float, double, enum (一種CLS
類型), and object.

代表元(Delegates)
可以被創(chuàng)建和被激活

標(biāo)識(shí)符(Identifiers)
一個(gè)標(biāo)識(shí)符的第一個(gè)字母必須來自一限制集。
通過大小寫在單一范圍內(nèi),不可能唯一地區(qū)別兩個(gè)或更多個(gè)標(biāo)識(shí)符(大小寫不敏感)。

2.2.4虛擬執(zhí)行系統(tǒng)(VES)
虛擬執(zhí)行系統(tǒng)實(shí)現(xiàn)了虛擬對象系統(tǒng)。通過實(shí)現(xiàn)一個(gè)負(fù)責(zé)NGWS runtime的執(zhí)行引擎(execution engine,縮寫EE)創(chuàng)建
VES。這個(gè)執(zhí)行引擎執(zhí)行你用C#編寫和編譯的應(yīng)用程序。
下列組件為VES的一部分。
1、中間語言(IL)——被設(shè)計(jì)為很容易受各種各樣的編譯器所兼容 。在該框架之外,C++、VB和C#編譯器都能夠生成
IL。
2、裝入受管代碼——這包括解決內(nèi)存中的名字、 表層類(laying out classes ),并且創(chuàng)建JIT編譯所必需的存根。
通過執(zhí)行經(jīng)常性校驗(yàn),包括加強(qiáng)一些訪問規(guī)則,類裝載器同樣也增強(qiáng)了安全性。
3、用JIT轉(zhuǎn)換IL成原始代碼——IL代碼并不是設(shè)計(jì)成為一種傳統(tǒng)的解釋字節(jié)代碼或樹型代碼,IL轉(zhuǎn)換是真正的編譯。
4、裝入元數(shù)據(jù)、校驗(yàn)類型安全和方法的完整性
5、垃圾收集(GC)和異常處理——兩者都是基于堆棧格式的服務(wù)。受管代碼允許你動(dòng)態(tài)地跟蹤堆棧。要?jiǎng)討B(tài)地識(shí)別各
個(gè)堆?蚣,JITter或其它編譯器必須提供一個(gè)代碼管理器。
6、描繪和查錯(cuò)服務(wù)——兩者都取決于由源語言編譯器所生成的信息。必須發(fā)出兩個(gè)映射:一個(gè)映射從源語言結(jié)構(gòu)發(fā)
到指令流中的地址,一個(gè)映射從地址發(fā)到堆棧框架中的位置。當(dāng)執(zhí)行從IL到原始代碼的轉(zhuǎn)換時(shí),這些映射被重新計(jì)算。
7、管理線程和上下文,還有遠(yuǎn)程管理——VES為受管代碼提供這些服務(wù)。
雖然這個(gè)清單并不完整,但它足以讓你理解運(yùn)行時(shí)基于的由VES提供的低層架構(gòu)?隙▽(huì)有專門討論運(yùn)行時(shí)的書,
而這本書將稍為深入地挖掘各種話題。

2.3 小結(jié)
這一章,我?guī)愎淞艘换剡\(yùn)行時(shí)的世界。我描述了當(dāng)創(chuàng)建、編譯和配置C#程序時(shí)它是如何工作的。你學(xué)會(huì)了中間語言
(IL),還有元數(shù)據(jù)是如何用于描述被編譯為IL的類型。元數(shù)據(jù)和IL都用于JITter檢測和執(zhí)行你的代碼。你甚至可以選擇用
哪一種JITter來執(zhí)行應(yīng)用程序。
在這一章的第二部分,涉及到了運(yùn)行時(shí)為何按這種方式工作的理論。你學(xué)了虛擬對象系統(tǒng)(VOS)和組成它的那部分。
對于類庫設(shè)計(jì)者最為感興趣的就是通用語言規(guī)范(CLS),它為基于VOS的語言交互操作設(shè)定規(guī)則。最后,你看到了虛擬執(zhí)行
系統(tǒng)(VES)如何通過NGWS runtime實(shí)現(xiàn)VOS。

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

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
成人羞羞视频在线看网址| 亚洲视频视频在线| 亚洲高清123| 精品一区二区三区的国产在线观看| 四虎国产精品免费观看| 国产精品xxxx喷水欧美| 福利视频第一区| 久久久99精品免费观看| 一本色道久久hezyo无码| 亚洲精品白浆高清久久久久久| av剧情在线观看| 蜜臀久久99精品久久久久久9| 亚洲天堂av资源在线观看| 熟女少妇内射日韩亚洲| 99久久er热在这里只有精品15| wwwxxxx在线观看| 亚洲精品亚洲人成人网在线播放| 亚洲日韩色图| 米奇在线777| 先锋a资源在线看亚洲| 福利视频一区二区三区四区| 日韩三级影视| 亚洲aⅴ日韩av电影在线观看| 成人在线app| 亚洲国产一成人久久精品| 午夜激情一区二区| 香蕉久久aⅴ一区二区三区| 波多野结衣先锋影音| 少妇高潮毛片色欲ava片| 午夜看片在线免费| 亚洲最新av| 最近中文字幕在线| 麻豆国产精品视频| 国产在线播放一区三区四| 成人国产精品久久久久久亚洲| 中国精品一区二区| 亚洲精品一区二区三区樱花| 日韩成人免费电影| 美女在线视频一区二区| 孩xxxx性bbbb欧美| 国产成人精品a视频一区www| 国产精品18久久久久久麻辣| 日韩免费一二三区| 久久国产精品久久久久久久久久| www·91·com| 美日韩精品视频免费看| 国产精品探花在线观看| 国产高清在线精品一区二区三区| 91精品婷婷国产综合久久性色| 国产欧美日韩卡一| 国产在线观看无码免费视频| 尤物在线观看| 狠狠操视频网站| 亚洲免费观看在线观看| 精品福利免费观看| 国产精品熟妇一区二区三区四区| 成人免费视频网站入口::| 高清不卡一二三区| 久久精品综合网| 稀缺呦国内精品呦| 精品少妇一区二区| 欧美在线a视频| 国产一区国产精品| 久久九九久精品国产免费直播| www.久久精品.com| 福利视频网站导航| 91啪九色porn原创视频在线观看| 日本69式三人交| 97视频在线免费播放| 宇都宫紫苑在线播放| 亚洲天堂偷拍| 亚洲成av人片一区二区密柚| 国产丝袜在线播放| 欧美国产亚洲另类动漫| 欧美午夜电影一区二区三区| 91亚洲国产成人精品性色| 欧美成人精品3d动漫h| 久草在线免费二| 成人性色生活片免费看爆迷你毛片| 国产porn视频| 免费在线稳定资源站| 亚洲毛片一区二区| 欧美日韩久久一区| 日日摸夜夜添夜夜添国产精品| 国产成人精品三级高清久久91| 国产一区二区在线视频聊天| 国产又粗又黄又爽的视频| 亚洲三区四区| 嫩草一区二区三区| 69国产精品| 成人看av片| 天堂成人免费av电影一区| 成人网ww555视频免费看| 毛片在线视频播放| 欧美欧美欧美欧美| 国产精品1luya在线播放| 欧美精品国产白浆久久久久| 一本到高清视频免费精品| www.桃色.com| 日韩极品少妇| av网址在线播放| 在线观看日本一区| 国产又粗又猛又黄视频| av免费观看大全| 欧美一区二区三区在线| 在线看的av网站| 亚洲男人天堂2024| 黄色免费大片| 久久综合久久色| 极品美女扒开粉嫩小泬| 久久一区二区中文字幕| 成人看片毛片免费播放器| 宅男一区二区三区| 日本影音先锋电影| 欧美一区免费| 免费在线观看污网站| 久久无码精品丰满人妻| 亚洲综合一区二区| 亚洲午夜久久久久久久久电影网| 艳妇荡乳欲伦69影片| 久久夜色精品一区| 欧美 变态 另类 人妖| 成人无码www在线看免费| 亚洲国产欧美91| 伊人资源视频在线| 7777精品久久久大香线蕉| 国产成人综合亚洲91猫咪| 黑人极品ⅴideos精品欧美棵| 免费在线黄色片| 成人免费看片98| 久久精品亚洲乱码伦伦中文| 91九色丨porny丨极品女神| 高清不卡在线观看av| 久久久久久久久久久99| 亚洲已满18点击进入在线看片| 快播日韩欧美| 在线成人www免费观看视频| av中文一区二区三区| 91免费看片网站| 久久精品国产一区二区| 欧美极品aⅴ影院| 欧美极品欧美精品欧美视频| 亚洲美免无码中文字幕在线| 日韩三级av| 午夜精品久久久久久久99热影院| av电影在线不卡| 91传媒在线免费观看| 91精品国产高清一区二区三密臀| 免费看毛片的网址| 伊人久久久久久久久| 尤物视频在线免费观看| 三级视频在线观看| 69精品丰满人妻无码视频a片| 农村寡妇一区二区三区| 亚洲日本一区二区三区| 久久99久久久精品欧美| 久久精品在线观看| 国产三级在线免费观看| 婷婷五月综合缴情在线视频| 91超薄肉色丝袜交足高跟凉鞋| 亚洲人成伊人成综合图片| 国产精品白浆一区二小说| 国产麻豆视频免费观看| 一级黄在线观看| 日本77777| 人人狠狠综合久久亚洲婷| 免费在线视频你懂的| 97精品久久久| 亚洲性猛交xxxxwww| 欧美亚洲第一区| 欧美成人vr18sexvr| 深夜国产在线播放| 国产va免费精品观看精品| 国产大尺度在线观看| 国产69精品久久久久久久| 免费看又色又爽又黄网站| 欧美性猛交xxxx免费看| 中文字幕22页| 中文字幕在线免费专区| 麻豆中文字幕在线观看| 国产精品午夜av在线| 97在线观看免费视频| 亚洲国产高清高潮精品美女| 成人国产亚洲欧美成人综合网| 久久久久久久久久一区二区三区| 欧美亚洲黄色| 丰满人妻av一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 美女三级福利视频| 一本大道色婷婷在线| 九九热最新视频//这里只有精品| 欧美精品videosbestsex另类| 国产伦理一区二区| 精品国产www| 国产精品玖玖玖| 7777kkkk成人观看| 九九视频在线观看| 亚洲成色www.777999| 精品91福利视频| 国产一区一一区高清不卡| 波多野结衣网页| 国产91麻豆视频| 久久久久人妻精品一区三寸| 粉嫩av一区二区三区免费观看| 国产清纯美女被跳蛋高潮一区二区久久w| 老熟妇高潮一区二区三区| 日韩精品一区二区三区中文精品| 欧美精品一区二区三区视频| 麻豆国产高清在线播放| 欧美大黑帍在线播放| 成人亚洲综合色就1024| 精品99久久久久成人网站免费| 亚洲日本在线观看| 欧美亚洲午夜视频在线观看| 亚洲午夜网未来影院| 欧美日韩在线播放一区| 国产噜噜噜噜久久久久久久久| 果冻天美麻豆一区二区国产| 色网站免费在线观看| 在线播放免费视频| 欧美制服丝袜第一页| 欧美黑人乱大交ⅹxxxxx| 日韩精品第一页| 香蕉伊大人中文在线观看| 成年人午夜剧场| 亚洲三级av在线| 亚洲精品无遮挡| 国产精品19乱码一区二区三区| 欧美精品一区二区三区蜜桃视频| 亚洲精品a区| 亚洲精华国产| 久久激情婷婷| 在线视频 91| 日本理论中文字幕| 欧美成人性福生活免费看| 天天综合网天天| 污污美女网站| 99精品国产一区二区青青牛奶| 国产黄色免费看| 欧美视频在线观看一区二区三区| 超碰福利在线观看| 潮喷失禁大喷水aⅴ无码| 欧美性xxxxxxxx| 男人的天堂在线视频免费观看| 美女网站视频在线观看| 国产精品a级| 亚洲va久久久噜噜噜久久| 少妇人妻丰满做爰xxx| 国产999精品久久久影片官网| 男同互操gay射视频在线看| 亚洲人成伊人成综合图片| 美女做暖暖视频免费在线观看全部网址91| 亚洲黄色小说网址| 五月婷婷久久丁香| brazzers精品成人一区| 毛片免费在线| 97久久超碰国产精品| 国产富婆一级全黄大片| 国产精品永久免费观看| 成人国产精品久久| 久久精品国产亚洲av久| 免费在线一区二区三区| 国产一区二区三区不卡av| 欧美日韩一区二区视频在线| 免费av福利在线观看| 四虎成人精品在永久在线观看| h片在线观看| 蜜桃视频在线观看视频| 国产福利免费在线观看| 国产视频不卡在线| 欧美日韩一级二级三级| 熟女熟妇伦久久影院毛片一区二区| 国产精品久久久久av福利动漫| 在线观看日本黄色| 91美女在线免费观看| 91视频入口| 亚洲国产97在线精品一区| 暧暧视频免费| 国产一区视频免费观看| 免费网站观看www在线观看| 久久中文字幕一区| 久久精品视频在线观看榴莲视频| 国产午夜精品久久久久久久久| 丰满少妇在线观看| 国产欧美日韩小视频| 特级西西人体wwwww| 欧美优质美女网站| 欧美日韩在线三区| 国产精品传媒毛片三区| 在线 亚洲欧美在线综合一区| 精品蜜桃传媒| 成人av电影在线网| 美女脱光内衣内裤视频久久影院| 久久久久久久久影视| 一级特黄录像免费播放全99| 伊人影院在线观看| 精品精品国产三级a∨在线| 亚洲va中文字幕| 国产剧情久久久久久| 亚洲黄色在线观看视频| 99在线高清视频在线播放| 在线视频资源站| 午夜毛片在线| 在线伊人免费视频| 日本24小时在线高清视频| 欧美天天综合色影久久精品| 国精产品一区一区二区三区mba| 日韩高清不卡在线| 777.av| 2020中文字幕在线播放| 欧美日韩中字一区| 亚洲黄色免费电影| 瑟瑟在线观看| 秋霞午夜鲁丝一区二区| 久久激情综合网| 欧美日韩精品久久久免费观看| 97看剧电视剧大全| 小嫩嫩12欧美| 日韩av中文字幕第一页| 精品视频高潮| 欧美交a欧美精品喷水| 日韩精品在线电影| 亚洲视频导航| 成人av色在线观看| 中文字幕一区二区三区四区| 中文字幕巨乱亚洲| 亚洲乱码国产乱码精品精98午夜| 欧美日韩一区二区三区电影|