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

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



مرحلة انشاء الكود

تعتبر مرحلة إنشاء الكود المرحلة الأخيرة من مراحل ترجمة الكود البرمجي. منشئ الكود داخل المترجم مسؤول عن تحويل الكود الوسيط إلى الكود الهدف. وتعد مرحلة إنشاء الكود دقيقة؛ بسبب التعقيد الكبير للعمليات المطلوبة، ولأن الكود نفسه متقلب للغاية، ولأن كل كود وسيط الذي يتعامل معه المترجم سيكون مختلفًا.

الكود الذي تم إنشاؤه بواسطة المترجم هو كائن كود لبعض لغات البرمجة منخفضة المستوى، على سبيل المثال: لغة التجميع. إذن فالكود المصدري المكتوب بلغة  عالية المستوى يتم تحويله إلى لغة منخفضة المستوى ينتج عنها كود الكائن منخفض المستوى، والذي يجب أن يحتوي على الحد الأدنى من الخصائص التالية:

  • يجب أن يحمل المعنى الدقيق للكود المصدر.

مُنشئ الأكواد

من المتوقع أن يكون لدى منشئ الكود فهم بيئة وقت تشغيل الجهاز المستهدف ومجموعة التعليمات الخاصة به. يجب أن يأخذ مُنشئ الكود الأشياء التالية في الاعتبار لإنشاء الكود:

  • اللغة الهدف: يجب أن يكون منشئ الكود على دراية بطبيعة اللغة الهدف التي سيتم تحويل الكود من اليها. قد تسهل هذه اللغة بعض التعليمات الخاصة بالجهاز لمساعدة المترجم على إنشاء الكود بطريقة أكثر ملاءمة، ويمكن أن يكون للجهاز الهدف بنية معالج (CISC أو RISC).
  • نوع التمثيل الوسيط: التمثيل الوسيط له أشكال مختلفة. يمكن أن يكون في بنية “شجرة بناء جملة مجردة” أو “التدوين البولندي العكسي” أو كود الـ (3) عناوين.
  • اختيار التعليمات: يأخذ منشئ الكود التمثيل الوسيط كمدخلات ويحوله إلى مجموعة تعليمات للجهاز المستهدف. يمكن أن يكون للتمثيل الواحد عدة طرق (تعليمات) لتحويله، لذلك يصبح من مسؤولية مُنشئ الكود اختيار التعليمات المناسبة بحكمة.
  • تخصيص السجل: يحتوي البرنامج على عدد من القيم التي يجب الحفاظ عليها أثناء التنفيذ. قد لا تسمح بُنية الجهاز الهدف بالاحتفاظ بجميع القيم في ذاكرة وحدة المعالجة المركزية أو السجلات. منشئ الكود يختار القيم التي يجب الاحتفاظ بها في السجلات. أيضًا، يقرر استخدام السجلات للاحتفاظ بهذه القيم.
  • ترتيب التعليمات: أخيرًا، يقرر منشئ الكود الترتيب الذي سيتم تنفيذ التعليمات به. ويقوم بإنشاء جداول زمنية للتعليمات لتنفيذها.

المصدر: Compiler Design - Code GenerationCode Generation in Compiler Design


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