تصميم لغة التجميع

شارك هذه المقالة مع أصدقائك!
Advertisements

اهم ما يمكن معرفته عن تصميم لغة التجميع.

تتكون أي لغة تجميع من 3 أنواع من عبارات التعليمات التي يتم استخدامها لتحديد عمليات البرنامج:

تصميم لغة التجميع مقاطع البيانات

  • توجيهات لغة التجميع Directives
  • أوامر كود التشغيل Opcode

تصميم لغة التجميع أوامر كود التشغيل

عادة ما تكون التعليمات (الجمل) في لغة التجميع بسيطة للغاية، بخلاف تلك الموجودة في لغات البرمجة عالية المستوى. بشكل عام، “رمز التشغيل” هو اسم رمزي لتعليمة قابلة للتنفيذ مكتوبة بلغة الآلة.

Advertisements

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

يتكون كل بيان تعليمات عادة من “عملية بايت واحدة، مشفرة داخل التعليمات نفسها” يمكن أن تكون “غير مباشرة” وتشير إلى عنوان الذاكرة التي يتم تخزين البيانات فيها.

يتم تحديد ذلك من خلال بنية المعالج: يعبر المجموع فقط عن كيفية عمل هذه البنية،تصميم لغة التجميع.

تصميم لغة التجميع مقاطع البيانات

هناك تعليمات مستخدمة لتحديد عناصر البيانات التي تحمل البيانات وتحمل المتغيرات. تحدد هذه العناصر: نوع البيانات وطول البيانات والمحاذاة.

يمكن أن تحدد هذه التعليمات أيضًا ما إذا كانت تلك البيانات متاحة للبرامج الخارجية.

Outside Programs

البرامج التي يتم جمعها بشكل منفصل عن البرنامج الذي يحتوي على البيانات)، أو أنها متاحة فقط لبرنامج يحتوي على قسم يحتوي على تعريف تلك البيانات.

توجيهات لغة التجميع Assembly Directives/ Pseudo-Ops

هذه هي التعليمات التي يتم تنفيذها من قبل المجمع أثناء وقت التجميع، ولا يتم تنفيذها عبر وحدة المعالجة المركزية في وقت التشغيل.

بحيث يمكن تجميع برنامج واحد بأكثر من طريقة، وربما لتطبيقات مختلفة لكل نسخة مجمعة مختلفة.

يمكن أيضًا استخدام التوجيهات للتلاعب بمعالجة العرض التقديمية للبرنامج، مما يجعل البرنامج أسهل للقراءة والصيانة من جانب المبرمج.

على سبيل المثال، يمكن استخدام Pseudo-Ops لحجز مساحات التخزين وملئها بقيمها الافتراضية اختياريًا.

غالبًا ما تبدأ أسماء عمليات Pseudo-Ops بنقطة لتمييزها عن إرشادات الجهاز الأخرى.

تدعم بعض المجمعات أيضًا تعليمات Pseudo-Instructions، التي تنشئ تعليمات تعليمات آلة أو أكثر.

تسمح برامج الترجمة الرمزية للمبرمجين بتحديد الأسماء التي يختارونها (العلامات أو الرموز) لمواقع الذاكرة.

Memory Locations

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

في الكود القابل للتنفيذ، يرتبط اسم كل “روتين فرعي” بنقطة إدخال نقطة، بحيث يتم استدعاء الروتين الفرعي باستخدام اسمه، وداخل البروتينات الفرعية.

يتم إعطاء التسميات لوجهات أمر GOTO.

تدعم بعض المجمعات “الرموز المحلية” التي تختلف مفرداتها عن الرموز العادية (مثال: يتم استخدام “10 $” كوجهة لأمر GOTO).

توفر معظم المجمعات إدارة مرنة للكود، مما يسمح للمبرمجين بما يلي: إدارة مساحات الأسماء المختلفة مساحات الأسماء، وحساب الإزاحات تلقائيًا داخل هياكل البيانات.

تحديد التسميات / التسميات التي تشير إلى القيم الحرفية أو نتيجة العمليات الحسابية البسيطة التي تتم عبر المجمع.

تُستخدم التصنيفات أيضًا لتهيئة الثوابت والمتغيرات بعناوين قابلة للنقل.

مثل معظم لغات الكمبيوتر الأخرى، تسمح لغات التجميع بإضافة “تعليقات” إلى التعليمات البرمجية المصدر.

يتم تجاهل هذه التعليقات بواسطة “المجمع” مما يعني أنها لا تترجم إلى لغة الآلة، بالطبع.

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

وتتكون من مجموعة من التعليمات المدمجة، دون أي تعليقات، ودون أي رموز ذات معنى، ودون أي تعريفات للبيانات.

وحدات الماكرو Macros

تدعم العديد من المجمعات وحدات الماكرو، وهي أكواد محددة برمجيًا تحتوي على سلسلة من الأسطر المتسلسلة من النص.

قد يحتوي هذا التسلسل من أسطر النص على سلسلة من التعليمات، أو سلسلة من تعليمات Pseudo-Ops الخاصة بالبيانات.

طالما تم تعريف الماكرو من خلال استخدام Pseudo-Op المناسب، فمن الممكن استخدام اسمه.

تمامًا كما يتم استخدام أسماء الأوامر التذكارية بالكامل.

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

ثم يعالج تلك الأسطر كما لو كانت تظهر في ملف التعليمات البرمجية المصدر.

نظرًا لأن وحدات الماكرو يمكن أن تحتوي على أسماء “قصيرة” وفي نفس الوقت تحمل أسطرًا طويلة من التعليمات البرمجية.

يمكن استخدام وحدات الماكرو لجعل البرامج المكتوبة بلغة التجميع تبدو أقصر.

يمكن استخدامه أيضًا لإضافة هياكل عالية المستوى للبرامج المكتوبة بلغة التجميع.

يمكن بشكل اختياري توفير رمز مستخدم لإدارة أخطاء إزالة الأخطاء وإصلاحها بشكل ضمني عبر معلمات المعلمات وعبر خصائص أخرى.

تحتوي معظم المجمعات على وحدات ماكرو مضمنة لمكالمات النظام وبعض تسلسلات التعليمات البرمجية الخاصة.
تسمح المجمعات غالبًا لوحدات الماكرو بامتلاك معلمات.

تحتوي بعض المجمعات على لغة ماكرو معقدة للغاية، وتجمع عناصر هذه اللغة عالية المستوى لأداء وظائف متعددة: معلمات اختيارية، ومتغيرات رمزية، وعبارات شرطية، ومعالجة سلاسل Strings.

يمكن إجراء عمليات الرياضيات، ويمكن إعادة استخدام كل هذه الأشياء أثناء تنفيذ وحدات ماكرو محددة، وهذه -المجاميع -تسمح لوحدات الماكرو بحفظ السياق أو تبادل المعلومات فيما بينها.

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

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

تستند الخوارزميات إلى معلمات معقدة.

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

حيث لا يعمل المبرمجون في الشركة مع عناصر الكمبيوتر المفاهيم ذات المستوى المنخفض مثال: لا تعمل مع المسجلات.
تم استخدام وحدات الماكرو في عصر الحاسوب المركزي لتخصيص Customize Large Scale Software Systems لتلبية طلبات محددة لعملاء معينين.

كما تم استخدامها من قبل فريق عمل العميل لتلبية احتياجات موظفيه من خلال إنشاء نسخ محددة من تشغيل الكمبيوتر الخاص بالشركة المصنعة أنظمة.

اشترى هذا العميل -على سبيل المثال، قاموا بذلك بالفعل، مع المبرمجين الذين كانوا يعملون لشركة IBM، بشكل أكثر تحديدًا، كانوا يعملون على نظام مراقبة المحادثة / نظام CMS / VM.

يمكن أيضًا استخدام إمكانات معالجة الماكرو Processing

فقط حتى يقوم المترجم بإنشاء رمز مكتوب بلغات مختلفة تمامًا. على سبيل المثال.

يمكن استخدام هذه التقنية لإنشاء نسخة من البرنامج المكتوب في “Cobol” باستخدام برنامج التحويل البرمجي مع برنامج ماكرو يحتوي على سطور من كود Cobol.

خلال وقت التجميع، يمكن للمشغلين توجيه المجمع إلى إنشاء الرمز بشكل تعسفي.

والسبب في ذلك، كما كان مفهومًا في السبعينيات، أن مفهوم “المعالجة الكلية” يختلف عن مفهوم “التجميع”.

حيث يشير المصطلح الأول في لغة الكمبيوتر الحديثة لدينا إلى الإمكانيات في برامج معالجة الكلمات.

معالجة النصوص، بدلاً من الإشارة إلى إنشاء التعليمات البرمجية.

في الواقع، ظهر مفهوم “المعالجة الكلية” -ولا يزال يظهر -في لغة البرمجة C، حيث تدعم تعليمات المعالج الأولي من أجل تحديد قيم Set Variables.

لاحظ أنه على عكس الأنواع المحددة من المعالجات الماكرو المذكورة والتي تعمل ضمن مجمعات، لم يكن المعالج الذي يشبه C يشبه Turing-Complete لأنه يفتقر إلى القدرة على “التكرار” أو الانتقال إلى تعليمات معينة عبر الأمر Go To.

على الرغم من قوة المعالجة القوية، فقد تم إهمالها في اللغات عالية المستوى، في حين تظل مهمة وحاضرة في مجمعات المجمع.

ويرجع ذلك إلى الارتباك والارتباك الذي يعاني منه العديد من المبرمجين، حيث كان لديهم “عوامل تعويض” للماكرو، مشكلة، وكانوا غير قادرين على فك معالجة الماكرو أثناء التجميع وأثناء التنفيذ.

يتم استبدال معاملات ماكرو استبدال المعلمات بشكل صارم بالاسم فقط: في وقت معالجة الماكرو، يتم استبدال قيمة المعلمة باسم المعلمة نصياً.

السبب الأكثر شيوعًا من الأخطاء هو استخدام المعلمة، التي كانت نفسها تعبر عن التعبير.

لا يتعلق الأمر باسم بسيط، بينما يتوقع مؤلف الماكرو اسمًا.

إذا تم استدعاء foo باستخدام المعلمة ac، فسيتم توسيع الماكرو بشكل غير متوقع توسيع.

Advertisements
‫0 تعليق

اترك تعليقاً