Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

สี่เฟสของการคอมไพล์

ก่อนอื่น ความหมายของคำว่า “การคอมไพล์” ขึ้นอยู่กับกลยุทธ์การอินเจกต์ที่เลือกไว้

สำหรับการเขียนไบต์โค้ดใหม่ การคอมไพล์หมายถึงการสร้างไบต์โค้ดของแอปพลิเคชันรูปแบบใหม่ที่ทำ instrumentation แล้ว

สำหรับการรองรับเอนจินโดยตรง การคอมไพล์หมายถึงการคอมไพล์สคริปต์ .mm ให้เป็นโมดูล Wasm ใหม่ที่เชื่อมต่อกับเอนจินเพื่อทำ instrumentation กับโปรแกรมแบบพลวัต เมื่อใช้กลยุทธ์นี้ โปรแกรมต้นฉบับไม่ถูกแตะต้อง และ ไม่ถูกจัดหาให้กับคอมไพเลอร์

สามเฟสแรกของการคอมไพล์ Whamm เหมือนกันทั้งสองกลยุทธ์ ส่วนเฟส translate และ emit จะแตกต่างกันไปตามกลยุทธ์การอินเจกต์ ทั้งนี้เพราะ “การปล่อยโค้ด” สำหรับการเขียนไบต์โค้ดใหม่หมายถึงการใช้ไลบรารี wirm เพื่อแทรกคำสั่งใหม่เข้าไปในโปรแกรม ในขณะที่ “การปล่อยโค้ด” สำหรับการรองรับเอนจินโดยตรงหมายถึงการปล่อยโมดูล Wasm ที่เข้ารหัสว่าจะทำ instrumentation ที่ไหนและคอลแบ็กที่จะแนบ ณ จุดที่โพรบ โดยเชื่อมต่อกับเอนจินตอนรันไทม์ของแอปพลิเคชัน

สี่เฟสของการคอมไพล์มีดังนี้:

  1. แยกวิเคราะห์
  2. ตรวจสอบ
  3. แปลง AST ให้เป็นตัวแทนของกลยุทธ์การอินเจกต์
  4. ปล่อยโค้ด