ฉันกำลังศึกษา Bootstrapping จาก Red Dragon Book Compilers และพบว่าแผนภาพ T สำหรับ cross compiler ค่อนข้างสับสน ฉันไม่เข้าใจความหมายของ "Run compiler1 ถึง compiler2" ทุกคนสามารถให้คำอธิบายที่ดีกว่าการเปรียบเทียบหรือตัวอย่างที่เกี่ยวข้องกับคอมไพเลอร์โลกแห่งความจริงได้หรือไม่?
สัญกรณ์บางอย่างก่อน โดย ฉันหมายความว่าคอมไพเลอร์สำหรับภาษา เขียนในภาษาที่ผลิตส่งออกภาษา / รหัสเครื่องNนี่คือหลุมฝังศพหรือ T-แผนภาพ
รวบรวมคอมไพเลอร์
สมมติว่าเรามีคอมไพเลอร์ข้ามภาษาใหม่ L ในภาษาที่ใช้งาน S การสร้างรหัสสำหรับเครื่อง N
สมมติว่าเรายังมีคอมไพเลอร์ S ที่มีอยู่กำลังทำงานอยู่บนเครื่องที่ใช้รหัส M สำหรับเครื่อง M:
เรียกใช้ LSN ผ่าน SMM เพื่อสร้าง LMN
คอมไพเลอร์ก่อสร้าง