麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > ChromeV8:編譯器工作流程,解析器

ChromeV8:編譯器工作流程,解析器

來源:千鋒教育
發布人:syq
時間: 2022-09-15 11:50:23 1663213823

  在過去的文章中,我們討論了很多關于 V8 的 JavaScript 編譯器。解析器,掃描程序和字節碼,以及它們的基本原理,內核代碼和密鑰結構,都是我們介紹的。

13

  在接下來的文章中,我們將逐步介紹編譯器工作流程,并觀察 V8 如何逐步將 JavaScript 代碼轉換為字節碼。

  V8從您編寫的 JavaScript 代碼開始,經過掃描程序和解析器,最后生成字節碼。

  注意:在本文中,我使用d8.exe而不是v8.exe,因為d8.exe可以直接打印到終端,并且d8與v8相比非常輕。

  1. 閱讀腳本代碼

  以下是我們的測試用例:

14

  下面是負責執行 JavaScript 代碼的執行()。很簡單,它首先從文件中讀取JavaScript代碼,然后編譯并執行代碼。

15

  在第 5 行中,新取自 8 獲取文件名,這就是我們的情況。在第 8 行中,讀取文件獲取文件內容,這實際上是我們的情況。

16

  第 8 行和第 10 行返回 JavaScript 代碼,具體取決于類型是外部一字節或 UTF8。在這里,我們的例子是UTF8,關于字符串::外部一字節字符串資源,我們將在將來討論它。

  返回到源代碼組::執行(),并在第 14 行單步執行::執行字符串,其源代碼如下:

17

  在第 13 行中,我們的 JavaScript 被包裝到一個變量script_source其中包括行和列偏移量。由于 V8 只編譯完全不是完整 JavaScript 代碼執行的 JavaScript 函數,因此變量script_source幫助編譯器記錄編譯信息。

  在第 14 行中,開始編譯腳本。

  2. 解析器初始化

  在工作流中,第一部分是掃描儀,第二部分是解析器。實際上,掃描程序是被動的,解析器是主動的,這意味著解析器主動地從編譯緩存中取出一個令牌,一旦緩存未命中,掃描程序就會被解析器喚醒,并生成令牌并填充緩存。

  下面是由腳本編譯器調用的編譯不受約束的內部():編譯在第14行的上面。

18

  上面的函數生成了未綁定的內部內容,第 11 行告訴我們,這些內容實際上只是一個共享函數。但是,什么是綁定?共享函數不能直接執行,V8 需要將上下文與共享函數匹配,“匹配”只是必應。

  讓我們進入獲取共享功能信息腳本。

19

  第7行正在查找我在上一篇文章中提到的編譯緩存。

  第 13 行,parse_info是解析器的包裝器,就像前面提到的變量script_source樣。

  第15行,Parser_info初始化,代碼如下:

20

  從第 6 行到第 12 行,將我們的情況中的 JavaScript 代碼包裝到變量腳本中,然后初始化line_offset并column_offset。就像我說的script_source樣。

  返回編譯器::獲取共享功能信息腳本(),然后在第 23 行單步執行編譯頂級 ()。

21

  在第 5 行中,文本() 返回抽象語法樹 (AST),如果為空,則 V8 啟動編譯器以生成 AST。

  第一次,AST 為空,并單步執行解析程序。

22

  在第 5 行中,創建解析器,即解析器初始化。

23

  從第8行到第18行,取出編譯信息,如掃描儀和編譯模式。

  從第9行到第23行,重要的東西是can_compile_lazily。

  第 25 行啟用以 % 開頭的本機命令。

  總結

  V8 使用 UTF16 對腳本源代碼進行編碼;

  V8 使用 v8::內部::源代碼來管理我們的腳本代碼;

  首先,查找編譯緩存,如果緩存未命中,則啟動編譯器;

  掃描程序是被動的,分析器是主動的。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區
主站蜘蛛池模板: 干妞网免费视频| 神秘电影欧美草草影院麻豆第一页 | 美女的尿口无遮掩的照片| 蜜桃精品| 亚洲码欧美码一区二区三区| 小婷又紧又深又滑又湿好爽| 91视频久久久久| 最新国产三级在线观看不卡| 80yy私人午夜a级国产| 亚洲国产欧美日韩精品一区二区三区 | 麻豆视传媒一区二区三区| 国产麻豆videoxxxx实拍| 老司机午夜在线视频免费| 国产剧情麻豆剧果冻传媒视频免费 | 你懂的在线免费观看| 免费大黄网站| 欧美日韩国产另类一区二区三区| 夫妇交换性三中文字幕| 国产99久久亚洲综合精品| 公车校花小柔h| 精品国产欧美一区二区| 91麻豆国产福利精品| 日本精a在线观看| 欧美激情第1页| 国产精品一区二区在线观看| 三级黄色片在线观看| 性按摩xxxx| 大陆一级毛片免费视频观看| 日韩福利在线| 亚洲一级毛片免费在线观看| 美女毛片在线观看| 极品丝袜系列列表| 国产高清吃奶成免费视频网站| 国产又爽又色在线观看| 三上悠亚日韩精品一区在线| 久久精品国产99久久99久久久| 国产成人三级经典中文| 交换年轻夫妇5| 国产精品国产三级国产在线观看| 一级做α爱**毛片| 国产精品一区二区久久|