指令碼的執行方式,大致有兩種:解釋和編譯。兩者都是以二進位制目標機器碼為輸入,所採取的執行策略不同。
何為解釋?就是說將機器碼逐條讀出,每讀一條就進行解碼、執行。實現相對簡單,一般用高階語言編寫直譯器,移植性好。能夠實現精確控制,方便中斷、異常處理,且能實現目標硬體功能的完全模擬。缺點是效率低下。
編譯,就是把二進位制機器碼按塊進行轉換,生成本地機器能夠直接執行的指令碼,並存放入緩衝區。它能夠實現**的高效執行,前提是緩衝區的**會被反覆呼叫。
通常情況下解釋執行的速度慢於編譯執行。原因是解釋執行時,不管以前有沒有執行過,都要對當前的指令進行分析解碼,而編譯執行能夠記住過去執行過**,當再次呼叫時直接從緩衝區中取出編譯好的**直接執行。舉個例子,比如一段迴圈**:sub這行它會執行100次,編譯執行時只在第1次執行時執行編譯器,然後的99次均直接執行緩衝區中的本機**;解釋執行要有100次呼叫直譯器的開銷。
mov r0, #
100loop
:subr0, r0, #
1bne
loop
一般編譯執行的流程如下:
for(;;)
...else
...}
有張圖,展示了mac上某x86模擬器動態編譯執行的架構:
iOS 開發打包模擬器
facebook分享,要提交審核,需要打包的乙個模擬器上傳,在facebook官網 說明如下 1.步驟 在模擬器中執行應用 在 xcode iphone 5 模擬器中執行應用。這會在 xcode 的deriveddata快取中自動建立模擬器版本。使用以下命令壓縮模擬器版本 ditto ck sequ...
ReactNative開發之模擬器
專案執行前確保 模擬器 已連線。1 cmd 命令 adb devices 會顯示 你已經連線的裝置。2 若無 用下面命令連線裝置。cmd 命令 adb connect 127.0.0.1 62001 這樣就可以執行我們的專案了 預設我們android studio 已開啟 專案目錄下 cmd命令 r...
mtk模擬器及編譯命令
編譯命令 make custom gprs gsm new remake update clean module name 編譯時進入dos下工程所在的目錄,然後輸入上面的命令語句即可開始編譯。引數 custom 是不同的軟體版本,編譯時可忽略引數 custom 系統會自動判斷。gprs gsm是說...