本地代碼檢視原始碼討論檢視歷史
計算機編程
本地代碼(native code)是計算機編程(代碼),編譯用來運行一個特殊的處理器(如英特爾x86級的處理器)和它的特殊指令集。
- 中文名:本地代碼
- 外文名:native code
- 類 型:計算機編程
- 特 殊:指令集
簡介
本地代碼(native code)是計算機編程(代碼),編譯用來運行一個特殊的處理器(如英特爾x86級的處理器)和它的特殊指令集。如果同一個程序在不同的處理器上執行的話軟件就必須能夠模擬出舊的處理器的指令。這種情況下,同一個程序是在模擬模式下運行的,這樣就會導致它比在本機模式下運行速度慢。(這個程序可以重寫並且重新編譯這樣就可以用新的處理器執行本機模式了。)
本地代碼也可以與字節碼區分開來(有時候叫做編譯代碼),這種代碼可以在虛擬機上運行(比如JAVA虛擬機)。虛擬機是一個把通用字節碼轉換成用於特定處理器的本地代碼的程序。微軟的.NET編譯器產生的就是字節碼(微軟叫它作中間語言)。Java字節碼和微軟的中間語言都能在執行前被即時編譯器編譯成高性能的本機代碼。 [1]
虛擬機
本地代碼也可以與字節碼區分開來(有時候叫做編譯代碼),這種代碼可以在虛擬機上運行(比如JAVA虛擬機)。虛擬機是一個把通用字節碼轉換成用於特定處理器的本地代碼的程序。微軟的.NET編譯器產生的就是字節碼(微軟叫它作中間語言)。Java字節碼和微軟的中間語言都能在執行前被即時編譯器編譯成高性能的本機代碼。
反編譯
將程序轉換成本地代碼也是一種防止反編譯的有效方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,也可以選擇關鍵模塊轉換。如果僅僅轉換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。當然,在使用這種技術保護Java程序的同時,也犧牲了Java的跨平台特性。對於不同的平台,我們需要維護不同版本的本地代碼,這將加重軟件支持和維護的工作。不過對於一些關鍵的模塊,有時這種方案往往是必要的。為了保證這些本地代碼不被修改和替代,通常需要對這些代碼進行數字簽名。在使用這些本地代碼之前,往往需要對這些本地代碼進行認證,確保這些代碼沒有被黑客更改。如果簽名檢查通過,則調用相關JNI方法。
別稱
本地代碼有時叫非託管代碼。
視頻
如何本地代碼提交到gitee中