iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
自我挑戰組

C again系列 第 4

AST nodes

  • 分享至 

  • xImage
  •  

整理一下:

  1. CPU 只能執行 instruction set,與既定的 hardware 互動交換 data (包含 instruction 及讀寫 value)
  2. OS 負責將 instruction command 放到 CPU 會讀取執行的位置
  3. 所謂程式,稍具體一點是按特定 syntax 組成的文字檔經過 compiler 轉換成對應的 instructions 包裝成OS 支援的格式 (例如 ELF = HEADER + SECTIONS)
  4. 執行程式,稍具體一點是 OS 讀 ELF 檔案,在記憶體中建立對應內容變成 process,由此安排 CPU 執行
  5. YARV 是一個 process 會讀 file 解析其內的 ruby 程式,轉換成 interpreter 對應的操作。可以理解 YARV 對 ruby 程式做了類似 compiler 的功能產生對應的 YARV instruction,這些 instruction 對應到 YARV 實作的 C function (已經被 compile 成 CPU instruction,是 YARV process 的內容) 執行

從 ruby syntax 往 CPU 看,各種各樣的程式需要轉換成有固定操作模式的結構,機器才有辦法處理, C compiler 也是做同樣的工作。這些轉換的規則定義在 parse.y,轉換後的結果是 AST nodes,是有明確操作順序的結構。

YARV 對 AST node 的定義在 struct rb_iseq_struct


上一篇
YARV Interpreter 的 main()
下一篇
rb_iseq_struct 與問題
系列文
C again30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言