เอาไว้ใช้ในการอธิบายกระบวนการแปลภาษาให้เข้าใจได้ง่ายขึ้น Tombstone Diagrams เอาไว้ใช้ในการอธิบายกระบวนการแปลภาษาให้เข้าใจได้ง่ายขึ้น Program P implemented in L L P S --> T L Translator implemented in L M Machine implemented in hardware M L Language interpreter in L
Tombstone diagrams: Combination rules P S P T S --> T M OK! OK! OK! OK! M L P L P S --> T M WRONG! WRONG!
Compilation ตัวอย่าง คอมไพล์โปรแกรมภาษาซีเพื่อให้รันบน CPU ตระกูล X86 ได้ C Tetris Tetris x86 x86 Tetris C --> x86 x86 x86
Cross compilation Cross compiler เป็นคอมไพเลอร์ที่ผลิต machine code ของ CPU ที่ไม่ใช่ของเครื่องที่เป็น host C Tetris Tetris PPC PPC Tetris download C --> PPC x86 Host ≠ Target x86
Compiling a Compiler ตัวอย่าง: เขียนคอมไพเลอร์เพื่อแปลงจาก Java ให้เป็น X86 machine code โดยใช้ภาษา C++ Java-->x86 C++ x86 C++-->x86 x86 Java-->x86
Interpreters Interpreter เป็นโปรแกรมที่ประมวลผลชุดคำสั่ง จำลองการทำงานของการประมวลชุดคำสั่งโดย CPU ตัวอย่างของ interpreter เช่น Java Virtual Machine (JVM) JVM Tetris JVM x86 x86
Full Bootstrap เริ่มต้นสร้างคอมไพเลอร์อย่างไร สมมุติว่าเราต้องการสร้าง Ada compiler สำหรับ CPU M ใช้กระบวนการที่เรียกกันว่า bootstrapping เริ่มสร้าง compiler Ada แบบพื้นฐานที่สุดโดยใช้ machine code M เขียน optimized Ada compiler โดยใช้ Ada ใช้คอมไพเลอร์พื้นฐานที่อยู่ในรูป machine code M คอมไพล์ optimized Ada compiler
ได้คอมไพเลอร์ที่คอมไพล์ได้เร็วและผลิด machine code ที่รันได้เร็ว! Bootstrapping ต้องการเขียน optimized Ada compiler โดยใช้ Ada เริ่มต้นจาก: Ada-->Mslow Mslow Ada-->Mfast Ada Ada-->Mfast Ada M Mslow Step 1 Ada-->Mslow Step 2 Ada-->Mfast Ada M Mfast Mslow ได้คอมไพเลอร์ที่คอมไพล์ได้เร็วและผลิด machine code ที่รันได้เร็ว!