A. 什麼是即時編譯
JIT(just-in-time compilation)指計算機領域里,即時編譯也被成為動態翻譯,是一種通過在運行時將位元組碼翻譯為機器碼,從而改善位元組碼編譯語言性能的技術。即時編譯前期的兩個運行時理論是位元組碼編譯和動態編譯。
在編譯為位元組碼的系統如 Limb 編程語言,Smalltalk, UCSD P-System, Perl, GNU CLISP, 和 java 的早期版本中, 源代碼被翻譯為一種中間表示即位元組碼。 位元組碼不是任何特定計算機的機器碼, 它可以在多種計算機體系中移植。位元組碼被解釋著運行在虛擬機里。
動態編譯環境是一種在執行時使用編譯器的編譯環境。 例如, 多數 Common Lisp 系統有一個編譯函數,他可以編譯在運行時創建的函數。
B. C#源代碼編譯成為本地代碼的編譯過程
很有興趣的話,可以去閱讀下JeffreyRitchie的《ClrviaC#》,目前出到第三版,英文好的話強烈推薦看英文版的,而且我有該電子書和實體書。
下面講下我的理解:大致上不會出什麼差錯的,細節部分你可以參照上面的書籍!
1.首先,c#源碼經過c#編譯器被編譯成託管模塊(IL中間代碼、元數據(Metadata))
2.然後,使用C#編譯器以及程序集鏈接器(AssemblyLinker----AL.exe)將上述託管模塊以及項目的資源文件Combine(整合)成一個程序集(Assembly)
上述程序集就是你所看到的exe文件或者dll文件等等,程序集中包含了manifest描述文件,是該程序集內容以及關系的一個清單,具體的內容你可以參見JR的書跟Java中的類似!
雙擊該exe運行的時候:
3.最後,運行時,CLR裝載對應的程序集,使用內部的三個即時編譯器(常用的為JIT),再去根據本機的環境去進行相應的優化(針對CPU優化等等),即時的翻譯成本地機器指令去執行。
還有一個本地化代碼生成工具,NGen.exe~~
這個最好能去看看那本JR的神作!細節不是我三言兩語能講清的~~
C. java解釋器和編譯器分別是什麼
Java的編譯方式有兩種,一種是和C++等語言一樣的,把源代碼編譯成和本地機器平台相關的機器語言,叫即時編譯。另一種是編譯成一種中間的位元組碼,與機器平台無關的,這種也是常用的,叫解釋型的。
即時編譯器因為產生的是本地機器的機器碼,能直接執行;不像位元組碼還要在JVM(Java虛擬機)上解釋運行,所以執行得更快些。
請採納!
D. 即時編譯器和JAVA解釋器的區別
即時編譯器預先把程序編譯完成,當執行時就直接調用。
而JAVA解釋器則是當需要調用該代碼時才臨時編譯解釋,而且沒執行一次就要編譯一次,而即時編譯器則是一次編譯多次執行。
E. native code是什麼意思啊
本地代碼(native code)是計算機編程(代碼),編譯用來運行一個特殊的處理器(如英特爾x86級的處理器)和它的特殊指令集。如果同一個程序在不同的處理器上執行的話軟體就必須能夠模擬出舊的處理器的指令。這種情況下,同一個程序是在模擬模式下運行的,這樣就會導致它比在本機模式下運行速度慢。(這個程序可以重寫並且重新編譯這樣就可以用新的處理器執行本機模式了。)本地代碼也可以與位元組碼區分開來(有時候叫做編譯代碼),這種代碼可以在虛擬機上運行(比如JAVA虛擬機)。虛擬機是一個把通用位元組碼轉換成用於特定處理器的本地代碼的程序。微軟的.NET編譯器產生的就是位元組碼(微軟叫它作中間語言)。Java位元組碼和微軟的中間語言都能在執行前被即時編譯器編譯成高性能的本機代碼。
F. JIT編譯器的簡介
在Java編程語言和環境中,即時編譯器(JIT compiler,just-in-time compiler)是一個把Java的位元組碼(包括需要被解釋的指令的程序)轉換成可以直接發送給處理器的指令的程序。當你寫好一個Java程序後,源語言的語句將由Java編譯器編譯成位元組碼,而不是編譯成與某個特定的處理器硬體平台對應的指令代碼(比如,Intel的Pentium微處理器或IBM的System/390處理器)。位元組碼是可以發送給任何平台並且能在那個平台上運行的獨立於平台的代碼。
G. 3DS模擬器著色器即時編譯什麼意思
模擬著色器正在高效運行。
絕大多數的Java實現都依賴即時編譯以提高代碼的運行效率。
即時編譯在運行時將代碼翻譯為機器碼,可以達到與靜態編譯語言相近的執行效率。Python的第三方實現PyPy通過即時編譯明顯改善了解釋器的性能。
H. java的『編譯器』與『即時編譯器』有什麼區別
你好!編譯器(在windows下,javac.exe)將源代碼(java文件)編譯為位元組碼(bytecode),存放在class文件中。
位元組碼不能直接在機器上執行,而是通過虛擬機(windows下是java.exe)執行。具體的執行方式有兩種:
1. 一般情況下解釋執行。解釋執行並不是「解釋為用c++語言寫成的程序」,而是jvm把位元組碼看成腳本,根據位元組碼中的指令,由JVM去調用實際的本地方法。
2. 在打開了JIT參數的前提下,jvm會把執行過程中發現的熱點位置,由jvm內部的即時編譯器編譯為本地機器碼直接執行。
編譯器將java文件編譯為class文件,解釋器將class文件變為機器語言
I. C++編譯器即時編譯問題。
斷點中斷後所在的行是尚未運行准備運行的行,你可以按F10單步運行過去之後,就看到結果了。
if(ia[x++]<ia[x])
這句中由於 ++ 在後,所以判斷運算先進行,然後再增一,這種前後書寫有關系只有在多重運算下才會生效,單獨的 x++ 和 ++x 沒有區別。
J. java的解釋執行方式是: javac hello.java java hello 那麼即時編譯方式的命令該怎麼輸
哪種方式,都不是說你即時輸入命令,而是javac Hello.java
java Hello