解釋器風格

解釋器風格
一、解釋器
解釋器是一個用來執行其餘程序的程序。針對不一樣的硬件平臺實現一個虛擬機。將高層次的程序翻譯爲低抽象層次的所能理解的指令,以取消在程序語言與硬件之間存在的語言差別。
解釋器是一般用來在程序語言定義的計算和有硬件操做肯定的計算之間創建對應和聯繫。完成基本的信息識別和轉換,甚至能夠從詞法到句法,到語法複雜的識別和處理。
 
解釋器執行
解釋器運行程序的方法有:
1.直接運行高級編程語言 (如 Shell 自帶的解釋器)
2.轉換高級編程語言碼到一些有效率的字節碼 (Bytecode),並運行這些字節碼
3.以解釋器包含的編譯器對高級語言編譯,並指示 處理器運行編譯後的程序 (例如: JIT)
二、解釋器風格
基本構件:
解釋器引擎
存儲區(被解釋的源代碼,解釋器引擎當前內部控制狀態的表示:在某個時刻須要執行那些指令,程序當前執行狀態的表示。)
鏈接器(對數據區的連接訪問)
三、解釋器和編譯器

程序語言環境分爲編譯和解釋兩大類。編程

編譯器:編譯器不會執行輸入的源程序代碼,而是將其翻譯爲另外一種語言,一般是可執行的機器碼或目標碼,並輸出到文件中以便隨後連接爲可執行文件並加以執行編程語言

解釋器:在解釋器中,程序源代碼被解釋器直接加以執行。spa

語言環境分爲編譯和解釋兩大類。
編譯器不會執行輸出的源程序代碼,而是將其翻譯成爲另外一種語言,一般是可執行的機器碼或目標碼,並輸出到文件中以便連接爲可執行的文件並加以執行。解釋器中,源程序代碼被解釋器直接加以執行。
使用解釋器來運行程序會比直接運行編譯過的機器碼來得慢,可是相對的這個直譯的行爲會比編譯再運行來得快。這在程序開發的雛型化階段和只是撰寫試驗性的代碼時尤爲來得重要,由於這個「編輯-直譯-除錯」的循環一般比「編輯-編譯-運行-除錯」的循環來得省時許多。
在解釋器上運行程序比直接運行編譯過的代碼來得慢,是由於解釋器每次都必須去分析並轉譯它所運行到的程序行,而編譯過的程序就只是直接運行。這個在運行時的分析被稱爲"直譯式的成本"。在解釋器中,變量的訪問也是比較慢的,由於每次要訪問變量的時候它都必須找出該變量實際存儲的位置,而不像編譯過的程序在編譯的時候就決定好了變量的位置了。
相關文章
相關標籤/搜索