1. 程式人生 > >原生代碼與託管程式碼

原生代碼與託管程式碼

最近在瞭解託管程式碼(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