Code Generation | توليد التعليمات البرمجية [5]

ihanan95منذ 7 سنوات

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

بعد ما انتهينا من جميع المراحل السابقة –مراحل التحليل الثلاثة و توليد اللغة المتوسطة– وصلنا الى النهاية أو مايسمى أيضاً بـ مرحلة التركيب والتي تحتوي على مرحلة  اختيارية وأخرى نهائية.

 

blog 5.jpg

 

#مرحلة تحسين الأكواد | Code Optimization

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

 

#مرحلة توليد التعليمات البرمجيّة | Code Generation

مرحلة توليد التعليمات البرمجية هي الخطوة   الأخيرة في المترجم التي تحول الكود البرمجي المكتوب بلغة برمجية سهلة الفهم للانسان الى لغة تفهمها الآلة لكي تقوم الآلة بتنفيذ الاوامر البرمجية المكتوبة.

ومن أهم المهام الأساسية التي يتم الأخذ بها في هذه المرحلة هي:

[1]  اختيار التعليمات | Instruction selection

مستوى تعقيد عملية التحوّل من اللغة المتوسطة الى اللغة الهدف يختلف باختلاف بعض العناصر التي يتم اختيارها ، وهي :

  • مستوى تمثيل اللغة المتوسطة intermediate representation التي ذكرناها في التدوينة السابقة.
  • طبيعة التعامل مع نوع البيانات.
  • نوع اللغة الهدف التي سيتم التحوّل لها ( سرعتها وحجمها ).

[2]  التخزين وحجز الأماكن | Registers allocation

مولّد التعليمات البرمجية هو المسؤول عن تهيئة وحجز جميع مايتعلق بالكود المكتوب من متغيرات وغيره.

زمخل.jpg

 

[3]  ترتيب الأوامر | Instruction ordering

اختيار الترتيب الذي تتم فيه حساب العمليات وتنفيذ الأوامر يؤثر على فعالية البرنامجة بصيغته النهائية المفهومة للآلة والقابلة للتنفيذ ، فـ طريقة الترتيب قد تقلل من عدد الـ Registers المستخدمة ومنها مايحتاج عدد أكبر.

 

ولكتابة الكود او التعليمات البرمجية بطريقة تكون مفهومة للآلة فستعاملنا سيكون بشكل مباشر مع الـ

registers و adresses.

 

ومثال على هذه الأوامر :

  • لعمليات التخزين والاستعادة ( LD – ST ) 
  • للعمليات الحسابية (ADD – SUB ..etc)
  • لعمليات التنقل ( BR )

وغيرها .. 

#مثال بسيط على تطبيق هذه الأوامر

x = y + z  هذه العملية البسيطة ستكتب كالتالي :

LD R1, y

LD R2, z

ADD R1, R1, R2

ST x, R1

 

وبانتهاء هذه المقاله ، تكون سلسلة شرح مراحل المترجم قد اكتملت.

اتمنى أن اكون وُفّقت في ذلك.

كلمات دليلية:
1
إعجاب
5236
مشاهدات
0
مشاركة
1
متابع
متميز
محتوى رهيب

التعليقات (1)

Rawan_alzaydat:

كتير مفيده الماده بس يا ريت لو انه في نفسها بالانجليزي

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !