本地代碼與託管代碼

最近在瞭解託管代碼(managed code)和本地代碼(native code)的知識,看到兩篇文章,覺得不錯,於是轉載過來。以下是原文:

****************************************

最開始寫代碼,都是經過編譯後生成彙編碼,直接在cpu上執行。 因爲不同的硬件架構和操作系統,會導致不同的cpu支持的指令可能不同,也就是說不通類型的cpu所能執行的代碼就是我們說所的本地代碼,也叫本機代碼或者native代碼。這給程序的移植性帶來很很大的麻煩,我們在一臺機器上運行的好好的代碼,如果拿到另一個硬件架構不同的機器上去的話,有可能運行不起來。C,C++寫的代碼等都是本地代碼。但是,本地代碼的好處就是效率比較快,因爲它少了一個轉換的過程。

後來,形成了另一種編程模式,例如:java。 就是採用一種虛擬機的機制, 屏蔽掉底層硬件和操作系統的不同,寫的代碼經過編譯後形成一種中間語言代碼,例如java的class字節碼。  這種中間碼直接在虛擬機裏面執行,虛擬機負責將中間碼轉換成其所在平臺上能執行的本地機器碼。 在微軟的.net 平臺下面的編程模型也是這樣的,不管是什麼語言,寫的代碼經過相應的編譯器編譯以後,會生成中間碼,然後.net framwork 裏面的虛擬機讀入這種中間碼,產生本地機器上的本地碼。 微軟把這種產生中間碼的語言所寫的代碼稱爲託管代碼,意思就是說,這種代碼是受.net framework 管理的,不能直接訪問內存等硬件, 需要通過.net framework 來訪問。

****************************************

http://www.cnblogs.com/muzhiye/archive/2012/02/23/2365556.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章