استبعاد التعبيرات الفرعية الشائعة
في نظرية المترجمات ، يُعد حذف التعبيرات الفرعية المشتركة ( CSE ) تحسينًا للمترجم يبحث عن حالات التعبيرات المتطابقة (أي، التي تُقيّم جميعها إلى نفس القيمة)، ويحلل ما إذا كان من المجدي استبدالها بمتغير واحد يحمل القيمة المحسوبة. [ 1 ]
مثال
في الكود التالي:
أ = ب * ج + ز؛ د = ب * ج * هـ؛
قد يكون من المفيد تحويل الكود إلى:
tmp = b * c; a = tmp + g; د = مؤقت * هـ؛
إذا كانت تكلفة التخزين والاسترجاع tmpأقل من تكلفة حساب b * cوقت إضافي.
مبدأ
تعتمد إمكانية إجراء تحليل التعبيرات المترابطة (CSE) على تحليل التعبيرات المتاحة ( تحليل تدفق البيانات ). يكون التعبير b*cمتاحًا عند النقطة p في البرنامج إذا:
- يتم تقييم كل مسار من العقدة الأولية إلى النقطة p
b*cقبل الوصول إلى p ، - ولا توجد مهام قبل
bأوcبعد التقييم ولكن قبل الصفحة .
سيقوم تحليل التكلفة/الفائدة الذي يقوم به المحسن بحساب ما إذا كانت تكلفة المتجر tmpأقل من تكلفة الضرب؛ وفي الواقع العملي، هناك عوامل أخرى مهمة أيضًا مثل القيم التي يتم الاحتفاظ بها في كل سجل.
يميز مطورو المترجمات بين نوعين من CSE:
- يتم تطبيق تقنية حذف التعبيرات الفرعية المشتركة المحلية ضمن كتلة أساسية واحدة.
- يعمل حذف التعبيرات الفرعية الشائعة العالمية على إجراء كامل،
يعتمد كلا النوعين على تحليل تدفق البيانات لتحديد التعبيرات المتاحة في أي نقاط في البرنامج.
فوائد
فوائد إجراء CSE كبيرة لدرجة أنها أصبحت عملية تحسين شائعة الاستخدام.
في الحالات البسيطة، كما في المثال أعلاه، قد يقوم المبرمجون بحذف التعبيرات المكررة يدويًا أثناء كتابة الكود. يُعدّ تسلسل الكود الوسيط الذي يُنشئه المُصرّف، كما هو الحال في حسابات فهرسة المصفوفات، المصدر الرئيسي لأخطاء التعبيرات المكررة ، حيث يتعذر على المطور التدخل يدويًا. في بعض الحالات، قد تُنشئ خصائص اللغة العديد من التعبيرات المكررة. على سبيل المثال، وحدات الماكرو في لغة C ، حيث قد ينتج عن توسيع وحدات الماكرو تعبيرات فرعية مشتركة غير ظاهرة في الكود المصدري الأصلي.
يجب على المترجمات توخي الحذر بشأن عدد المتغيرات المؤقتة التي يتم إنشاؤها لتخزين القيم. فالعدد المفرط من القيم المؤقتة يُسبب ضغطًا على المسجلات، مما قد يؤدي إلى تحميلها على الذاكرة، وهو ما قد يستغرق وقتًا أطول من مجرد إعادة حساب نتيجة عملية حسابية عند الحاجة.
انظر أيضاً
مراجع
- ↑ ستيفن موشنيك؛ موشنيك وشركاؤه (15 أغسطس 1997). تصميم وتنفيذ المترجمات المتقدمة . مورغان كوفمان. ISBN 978-1-55860-320-2.
حذف التعبيرات الفرعية الشائعة.
- ستيفن إس. موشنيك ، تصميم وتنفيذ المترجمات المتقدمة ( مورغان كوفمان ، 1997) الصفحات 378-396
- جون كوك . "إزالة التعبيرات الفرعية المشتركة العالمية". وقائع ندوة حول بناء المترجمات ، إشعارات ACM SIGPLAN 5(7)، يوليو 1970، الصفحات 850-856.
- بريجز، بريستون، كوبر، كيث د.، وسيمبسون، إل. تايلور. " ترقيم القيم ". البرمجيات - الممارسة والخبرة ، 27 (6)، يونيو 1997، الصفحات 701-724.
- تحسينات المُترجم
