ข้อเสียของรูปแบบกลางการทำงาน


16

ฉันกำลังเขียนเครื่องมือเพิ่มประสิทธิภาพสำหรับภาษาที่คล้ายกับ JavaScript และต้องเลือกการแสดงรหัสกลาง ตัวเลือกที่ชัดเจน / ทั่วไปในทุกวันนี้ก็คือStatic Single Assignment (SSA)

อย่างไรก็ตามโมเดิร์นคอมไพเลอร์การดำเนินงานใน Cยังกล่าวถึงรูปแบบกลางทำงานซึ่งโดยทั่วไปหมายถึงจะบริสุทธิ์การทำงานสำหรับการแสดงกลาง (บริสุทธิ์ในแง่เดียวของตัวแปรท้องถิ่นข้อมูลกองยังคงไม่แน่นอนและไม่ CPS เพียงตรงไปตรงมาletบล็อกและโทรหาง) และ มีข้อดีบางประการในแง่ของการให้เหตุผลที่ง่ายกว่า

สมมุติว่ามันไม่ใช่เกมง่ายๆหรือทุกคนจะใช้การเป็นตัวแทนอยู่แล้วดังนั้นคำถามของฉันคืออะไรรูปแบบการใช้งานกลางที่มีข้อเสียเปรียบเทียบกับ SSA อย่างไร


3
การวิเคราะห์แบบไหนที่คุณจะทำกับแบบฟอร์มกลางนี้ SSA นั้นยอดเยี่ยมสำหรับการกำจัดรหัสที่ตายแล้วการแพร่กระจายอย่างต่อเนื่องความเชี่ยวชาญบางส่วนและเช่นนั้น หากสิ่งประเภทนี้ไม่ได้อยู่ในเมนูของคุณคุณสามารถข้าม SSA และใช้การแสดงที่ผ่อนคลายยิ่งขึ้นสำหรับการวิเคราะห์ที่ง่ายขึ้น แต่การสร้างรูปแบบ SSA เป็นงานที่ค่อนข้างยุ่งยากและคุณสามารถแปลง SSA เป็น CPS (และในทางกลับกัน) ได้อย่างง่ายดายซึ่งเพิ่มผลประโยชน์เป็นสองเท่า
SK-logic

ใช่ฉันตั้งเป้าหมายไว้ที่ monty เต็ม ๆ ที่สวยมากและภาษาอินพุตและรูปแบบเอาต์พุต (ตอนแรก C ++) เป็นทั้งภาษาที่จำเป็น
rwallace

การสร้างรูปแบบ SSA นั้นเป็นงานที่ไม่สำคัญและคุณสามารถแปลง SSA เป็น CPS ได้อย่างง่ายดายนอกจากนี้คุณยังสามารถแปลง CPS เป็น SSA ซึ่งเพิ่มผลประโยชน์เป็นสองเท่า
Leon Alexis คาร์ดินัล

คำตอบ:


1

SSA นั้นยอดเยี่ยมสำหรับการกำจัดรหัสที่ตายแล้วการแพร่กระจายอย่างต่อเนื่องความเชี่ยวชาญบางส่วนและเช่นนั้น หากสิ่งประเภทนี้ไม่ได้อยู่ในเมนูของคุณคุณสามารถข้าม SSA และใช้การแสดงที่ผ่อนคลายยิ่งขึ้นสำหรับการวิเคราะห์ที่ง่ายขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.