揭秘 JavaScript:V8 引擎如何啟動你的程式碼

閱讀時間約 1 分鐘

如果你曾經撰寫過網頁,那你一定接觸過 JavaScript
無論是在 NodeJs 或是瀏覽器中運行。

但你有沒有想過,我們寫下的 JS 程式碼,這些看似單純的英文和符號,是如何被轉化為機器能夠理解和執行的程式呢?

今天,讓我們一起深入了解其中的核心主角
——Google 開發的開源 JavaScript 引擎:V8。
V8 是眾多 JavaScript 引擎中的佼佼者,但今天我們專注於它是如何魔法般地啟動你的程式。

首先,V8 引擎會把我們的 JS 程式碼,這一大串文字,交給解析器。

解析器的工作是找出程式碼中的關鍵元素,如函數名稱、變數宣告等,並將它們組織成一個稱為抽象語法樹(AST)的結構。

這個結構不僅存儲變數和命令,還記錄它們的執行順序,為接下來的處理階段做好準備。

而 AST 將被送到下一個的流程 Ignition 它就像火星一樣負責點燃了引擎,啟動你的程式 它負責將我們的 JavaScript 程式碼編譯成 ByteCode

ByteCode 是一種相當底層的程式語言,它已經相當接近能直接被機器執行的機器語言,基本上這個程式直接丟給 JS 虛擬機,就可以直接 run 起來但這還不夠,快還要更快


V8 引擎設計了第二套系統 TurboFan

TurboFan 會與 Ignition 合作,取得各個 function的執行情況、哪些特別常被執行、哪些 function 型別其實是固定的,並且在進一步的編譯成最快的 MachineCode (最佳化)Ignition 負責啟動程式碼,TurboFan 則負責優化和加速

這兩套系統構建出了一個很強大的特性 【JIT 即時編譯】 既擁有編譯語言的高速,用擁有直譯語言的靈活

這就是 V8 引擎


V8 引擎編譯流程

V8 引擎編譯流程


0會員
3內容數
Ray 貓 - 全端網頁工程師、遊戲開發師 這邊會分享一些科技相關、視覺藝術、前端的最新資訊 - 台灣大學課程網全端工程師 Ziphus 獨立開發者 - 喜歡挑戰也喜歡冒險 電子郵件 [email protected]
留言0
查看全部
發表第一個留言支持創作者!