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