اشرح كيف يتم توليد الشفرة الوسيطة عند بناء المترجمات
اشرح كيف يتم توليد الشفرة الوسيطة عند بناء المترجمات
توليد الشفرة الوسيطة
هي أحد أشكال التمثيل الوسيط خلل ترجمة البرنامج المصدري إلى شفرة الهدف فإن المترجم قد يقوم بتكوين واحد أو أكثر من التمثيلت Syntax Tree الوسيطة والتي يمكن أن تأخذ أكثر من شكل. شجرة القواعد
.تمثيل من المستوى المنخفض أو ما يمكن اعتباره تمثيل يشبه لغة اللة أو شفرة بعد النتهاء من عمليات التحليل القواعدي والمعنوي للبرنامج المصدري فإن الكثير من المترجمات تقوم بشكل وتُستخدم عادة خلل عمليات التحليل اللفظي والمعنوي Generate آلة مجردة بمعنى أن هذا التمثيل ليس مخصصا للة معينة. هذا التمثيل الوسيط يجب أن يمتلك خاصيتين مهمتين هما: صريح بتوليد أو إنتاج
يمكن القول أن عادة يكون التمثيل الوسيط عبارة عن سلسلة من التعليمات البسيطة. هناك شكل من أشكال هذا التمثيل يسمى .2 أن تكون ترجمته إلى لغة الهدف أمرا سهل .1 أن يكون توليد هذا التمثيل سهل( operands يتم فيها استخدام ثلثة معاملت Three-address Code المعاملت هي المدخلت التي تُستخدم في العمليات المختلفة) وهي تحتوي على سلسلة من التعليمات الشبيهة الشفرة ثلثية العنوان
:بتعليمات لغة التجميع على النحو التالي t1=inttofloat(60) t2=id3*t1 t3=id2+t2 id1=t3 :ثلثية العنوان يمتلك على الكثر معامل واحد في الجانب في هذا النوع من التمثيل هناك عدة نقاط مهمة يجب التركيز عليها وهي assignment اليمن وبالتالي فإن هذه التعليمات تقوم بتحديد الترتيب الذي يجب أن تُنفذ فيه العمليات أي تحديد أولويات التنفيذ .1 كل تعليمة من تعليمات جملة التعيين
.من ثلثة معاملت. .3 بعض التعليمات ثلثية العنوان مثل التعليمة الولى والتعليمة الخيرة في مجموعة التعليمات السابقة تمتلك أقل .2 يجب على المترجم توليد اسم مؤقت لتخزين أو حفظ القيمة التي تم إيجادها بواسطة التعليمة ثلثية العنوان. فتنفيذ عملية الضرب مثل يسبق عملية تنفيذ عملية الجمع في البرنامج المصدري.
توليد الشفرة
بأخذ الشفرة الوسيطة على أنها مدخلت البرنامج المصدري ويحولها Code Generator الذاكرة لتخزين كل متغير يستخدمه البرنامج. بعد ذلك يتم ترجمة تعليمات الشفرة الوسيطة إلى سلسل من تعليمات إلى شفرة مكتوبة بلغة الهدف وإذا كانت شفرة الهدف هي نفسها شفرة اللة فسوف يتم اختيار مسجلت ومواقع في يقوم مولد الشفرة
.فإن الشفرة الوسيطة السابقة يمكن تحويلها إلى شفرة اللة التالية: الجانب الحاسم في توليد هذه الشفرة هو التوظيف الصحيح والمناسب للمسجلت عند تخزين المتغيرات. على اللة التي تقوم بإنجاز نفس المهمات R2, R1 سبيل المثال إذا تم استخدام المسجلين LDF R2, id3
MULF R2, R2, #60.0 LDF R1, id2 ADDF R1, R1, R2 STF id1, R1 في كل تعليمة فيعني أنه يتم التعامل F ثم بعد ذلك تم المعامل الول في كل واحدة من هذه التعليمات يحدد الوجهة أو الهدف أما R2 قد تم تحميلها إلى المسجل id3 ضرب هذه المحتويات بالعدد الحقيقي الثابت 0.60 أما الرمز # فيوضح أن 0.60 قد تم التعامل معه على اعتبار أنه مع أعداد حقيقية. تبين هذه الشفرة أيضا أن محتويات العنوان
.Immediate Constant في حين التعليمة الرابعة تقوم بإضافة القيمة التي تم حسابها ثابت فوري R1 إلى المسجل id2 وبذلك يمكن التعليمة الثالثة تقوم بنقل id1 قد تم تخزينها في العنوان R1 إليها. أخيرا القيمة الموجودة في المسجل R2 القول أن تعليمات البرنامج المصدري قد تم تنفيذها بشكل صحيح. سابقا في المسجل
إدارة جدول الرموز
يحتوي على سجلت لسماء Data Structure واسترجاعه بسرعة كبيرة. أما المعلومات التي يتم جمعها عن السم فتتضمن ما يلي: المتغيرات. هيكل البيانات هذا يتم تصميمه بشكل يسمح للمترجم بإيجاد السجل المطلوب وكذلك حفظ السجل المتغيرات المستخدمة في البرنامج المصدري كما يحتوي على معلومات عن الخصائص المختلفة لكل اسم من أسماء يمكن تعريف جدول الرموز بأنه عبارة عن هيكل بيانات
نوع السم (عدد صحيح، عدد حقيقي أو سلسلة نصية ..الخ) .1 سلسلة المحارف التي تشكل السم 2.
فإنه يجب إجراء بحث في الجدول لمعرفة فيما إذا كان السم المُدخل موجود سابقا أم ل وإذا كان إدخاله لول مرة إن كل سطر في جدول الرموز هو عبارة عن ثنائية على الشكل (اسم، معلومات) وفي كل مرة يتم فيها إدخال اسم .5 بعد المواصفات التي تختلف من لغة لخرى .4 موقع السم في الذاكرة .3 صيغة السم
.الشفرة لمعرفة كمية ونوعية الذاكرة التي يجب تخصيصها للسم. في مرحلة تحليل المعاني وذلك للتأكد من التوافق بين التصريح عن السم واستخدام هذا السم أو في مرحلة توليد المعلومات المُجَمعة في جدول الرموز يمكن أن تستخدم خلل مراحل متعددة فمثل يمكن استخدام هذه المعلومات فسوف يتم أيضا إدخال المعلومات المتعلقة بهذا السم لستخدامها في مراحل الترجمة المختلفة.