自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談.NET CLR的基礎(chǔ)知識

開發(fā) 后端
在.NET CLR中采用的是所謂的JIT Compilation,它的實現(xiàn)原理與動態(tài)編譯類似,將source code轉(zhuǎn)換成MSIL,再利用JIT將MSIL轉(zhuǎn)換成本地代碼,在運行時,讀取Assembly中的元數(shù)據(jù)進行相關(guān)操作。

今天筆者溫故了.NET CLR的相關(guān)知識,順便拿出來和大家分享一下,筆者所講的.NET CLR很基礎(chǔ),希望能給你帶來幫助。

大家都知道.NET是支持所謂的多語言的,但其實.NET只有一種語言,就是MSIL,其它所有的語言,按照今天培訓(xùn)課上講的,就是MSIL的一種子語言。MSIL看起來類似一種匯編語言,想當(dāng)初,用MSIL做一個虛擬機,做的是云里來,霧里去的,對匯編還是怕的很。

在很多時候,MSIL都被當(dāng)成一種基于棧的OO形式的匯編語言。而這種語言被.NET CLR所編譯,轉(zhuǎn)換成本地執(zhí)行文件。在這里要注明的是,MSIL并不像其它的匯編語言,它所包含匯編指令不是應(yīng)用于一臺真正的機器上,而一種抽象的機器上,也因為此,基于MSIL的程序可以應(yīng)用于不同的機器上,這也是MSIL的特點之一。

而在一臺機器上,MSIL代碼是不能被直接編譯的,而是必須首先經(jīng)過JIT轉(zhuǎn)換成本地代碼(native code)。

那么MSIL究竟能做什么呢?呵呵,即然做為.NET CLR的“唯一”的一種語言,凡是你在其它語言里能做到的,就是MSIL所做的。那在編譯一個.NET CLR文件中,MSIL具體在何時何地扮演何種角色呢?(很想畫個圖,可是不知道怎么在CNBlog中實現(xiàn),好像以前直接從word里可以直接copy,現(xiàn)在不行了) 大概描述一下編譯的流程,大家應(yīng)該就能明白了。

按照傳統(tǒng)的編譯流程,是將source code 編譯成object code,再將object與一個library連接起來編譯成binary文件,然后執(zhí)行binary文件。而隨后推出了Dynamic link Compilation, 即動態(tài)編譯,其指的是將source code編譯成一個object code,但是其在編譯時不連接libary文件,而是在運行binary文件時,動態(tài)連接library 文件。

那可能有人就問,library文件是什么?它其實包含的就是metadata,元數(shù)據(jù)。而在.NET CLR中采用的是所謂的JIT Compilation, (Just In Time Compilation),它的實現(xiàn)原理與動態(tài)編譯類似,將source code轉(zhuǎn)換成MSIL,再利用JIT將MSIL轉(zhuǎn)換成本地代碼,在運行時,讀取Assembly中的元數(shù)據(jù)進行相關(guān)操作。

大概的.NET CLR流程就是這樣了,不多說了,這個要說下去,就該談?wù)刴etadata, 還有一些編譯過程的細節(jié),比如說JIT Engine, BackPatch, JMI Thunk等一系列的編譯機制。

【編輯推薦】

  1. 淺析C#數(shù)組操作方法
  2. C#數(shù)組操作全面分析
  3. C#數(shù)組和串操作經(jīng)驗總結(jié)
  4. 為你解疑:CLR是什么?
  5. 分析與對比CLR Via C#靜態(tài)構(gòu)造函數(shù)的性能
責(zé)任編輯:阡陌 來源: 51CTO
相關(guān)推薦

2009-07-15 16:00:34

橋架綜合布線

2023-07-04 07:31:06

MapReduce數(shù)據(jù)處理編程模型

2009-07-27 16:11:01

ASP.NET網(wǎng)頁模板

2009-09-09 16:21:13

.NET序列化基礎(chǔ)知識

2021-11-05 15:31:01

UbuntuLinux

2009-07-24 17:04:57

ASP.NET中Coo

2013-03-27 15:56:05

Android開發(fā)Andriod繪圖

2011-11-04 17:26:12

2021-08-18 16:09:39

NestJS

2011-09-16 10:13:02

Emacs

2011-03-29 14:11:20

Cacti基礎(chǔ)知識

2009-04-10 09:35:00

WCDMA基礎(chǔ)無線網(wǎng)絡(luò)

2010-07-16 11:22:31

Perl

2014-08-20 10:15:45

2009-11-10 17:04:29

VB.NET基礎(chǔ)知識

2009-09-23 11:07:11

Hibernate基礎(chǔ)

2010-07-16 10:53:30

Perl基礎(chǔ)

2015-06-01 13:35:43

數(shù)據(jù)中心DCIM

2009-04-17 14:22:40

XPathXML基礎(chǔ)

2023-07-14 15:10:17

PythonAsyncIO庫
點贊
收藏

51CTO技術(shù)棧公眾號