مرحلة إنشاء كود وسيط في عملية ترجمة الكود Intermediate Code Generation

اقرأ في هذا المقال


في نموذج عمل المترجم، تقوم الواجهة الأمامية للمترجم بعملية ترجمة للبرنامج المصدر إلى كود وسيط مستقل، ثم تستخدم الواجهة الخلفية للمترجم هذا الكود الوسيط لإنشاء الكود الهدف (والتي يمكن أن يفهمها الجهاز).

ما هو الكود الوسيط

أثناء ترجمة البرنامج المصدر إلى كود يفهمه الجهاز الهدف، قد يقوم المترجم بإنشاء كود بلغة متوسطة المستوى، والذي يُعرف باسم الكود الوسيط أو النص المتوسط. يكون تعقيد هذا الكود بين كود المصدر وكود الهدف، يمكن تمثيل الكود الوسيط في شكل “تدوين بعد الإصلاح” و “شجرة بناء الجملة” و “الرسم البياني الدوري الموجّه (DAG)” و “الرمز ثلاثي العناوين”.

فوائد إنشاء كود وسيط

1. لنفترض أن لدينا (n) من لغات المصدر و (m) من اللغات الهدف. بدون الكود الوسيط سنقوم بتغيير كل لغة مصدر إلى لغة هدف مباشرة. لذلك، فإن لكل زوج من أزواج لغتي المصدر والهدف سنحتاج إلى مترجم. ومن ثم فإنه سيتطلب عدد (n * m) من المترجمات، واحد لكل زوج. إما إذا استخدمنا كودًا وسيطًا، فستتطلب (n) من المترجمات لتحويل كل لغة مصدر إلى كود وسيط وعدد (m) من المترجمات لتحويل الكود الوسيط إلى (m) من اللغات المستهدفة، بالتالي نحن نطلب عدد من المترجمات وهو (n + m) فقط.

2. تسهيل إعادة الاستهداف، حيث يمكن إنشاء مترجم لكل جهاز مختلف عن طريق إرفاق واجهة خلفية (والتي تُنشئ الكود الهدف) للجهاز الجديد بنهاية أمامية موجودة (والتي تولد كودًا وسيطًا).

3. يمكن تطبيق مُحسِّن الكود المستقل للآلة على الكود الوسيط.

4. الكود الوسيط بسيط بما يكفي ليتم تحويله بسهولة إلى أي كود هدف.

5. معقد بما يكفي لتمثيل كل التراكيب المعقدة للغة عالية المستوى.

طرق تمثيل الكود الوسيط

يمكن تمثيل الكود الوسيط بطريقتين:

1. كود وسيط عالي المستوى

يمكن تمثيل الكود الوسيط عالي المستوى قريب جدًا من لغة المصدر نفسها. يمكن إنشاؤها بسهولة من الكود المصدر، ويمكننا بسهولة تطبيق التعديلات على الكود لتحسين الأداء. ولكن من أجل تحسين الجهاز الهدف، فهو أقل تفضيلًا.

2. كود وسيط منخفض المستوى

الكود الوسيط منخفض المستوى قريب من الجهاز الهدف، مما يجعله مناسبًا للسجل وتخصيص الذاكرة وما إلى ذلك، يتم استخدامه للتحسينات المعتمدة على الجهاز.

المصدر: Intermediate Code Generation in Compiler Design?What is intermediate codeCompiler - Intermediate Code GenerationIntermediate code


شارك المقالة: