الجمعة، 4 يناير، 2013

شرح ماهو المجمع Assembler



عادة ما يقوم أي مجمع حديث بتكوين كود غرضي/نهائ Object Code عبر ترجمة تعليمات لغة التجميع إلى شفرة تشغيل Opcode (Operation Code)، وعبر تحليل الأسماء الرمزية لمواقع تخزين البيانات بالذاكرة Memory Locations وغيرها من الأشياء.ويعتبر استخدام "الإشارات الرمزية" Symbolic References سمة أساسية من سمات المجمعات, حيث يتم حفظ حسابات طويلة ومملة, وتحديث عناوين الذاكرة بعد تعديلات البرنامج.وتحتوي معظم المجمعات على تسهيلات Facilities من نواع "ماكرو" Macro تقوم بعمليات "استبدال النصوص" Textual Substitution- وعلى سبيل المثال, لتوليد متواليات قصيرة من التعليمات تعمل Inline بدلا من أن تعمل في Subroutine.

وبصفة عامة, فإن كتابة المجمعات -لأن المجمع أساسا عبارة عن برنامج Program يتم كتابته- أسهل من كتابة مترجمات اللغات عالية المستوى Compilers, وقد ظهرت المجمعات منذ خمسينات القرن الماضي.وتقوم المجمعات, وخصوصا تلك المعتمدة على بناء/هندسة حاسوبية Architecture من نوع RISC, مثل نماذج: MIPS و SPARK من شركة "صن مايكروسيستمز", و PA-RISC من شركة "هيوليت باكارد", وأيضا معالجات x86(-64), تقوم بالوصول لجدولة التعليمات للدرجة المثلى, من أجل استغلال خط Pipeline وحدة المعالجة المركزية أكفأ استغلال.

وهناك نوعين من المجمعات Assemblers, وتم تقسيم النوعين على أساس عدد مرات المرور Passes خلال الكود المطلوب لإنتاج الكود النهائي, أو البرنامج القابل للتنفيذ Executable بمعنى آخر.النوع الأول, هو المجمع الذي يمر على الكود "مرة واحدة فقط", مفترضا أن تعريف كل رموز الكود (مثل أسماء المتغيرات) سبق أي تعليمات قد تشير لهذه الرموز.النوع الثاني, وهو المجمع الذي يمر "مرتين" -أو أكثر من مرة- على الكود, ويقوم أثناء المرور الأول بتكوين جدول Table يضع فيه كل الرموز التي لم يتعرف عليها Unresolved, ويستخدم تلك الرموز في المرور الثاني 2nd Pass, كي يقوم بحل تلك العناوين Addresses.أما ميزة المجمع ذو النوع الأول "مرور واحد", فهي "السرعة" بكل تأكيد- والتي لم تعد مهمة كما كانت يوما ما, بعد أن تطورت سرعات وإمكانيات أجهزة الكمبيوتر.أما ميزة النوع الثاني من المجمعات "تقوم بمرورين فيما فوق" فهي أن رموز البرنامج يمكن أن تعرف في أي مكان بالكود المصدري Source Code للبرنامج. وكنتيجة لذلك, فيمكن تعريف البرنامج بطريقة أكثر منطقية وذات مغزى -على سبيل المثال, يستطيع المبرمج قراءة برامج زملاءه بسهولة أكثر-.مما يجعل برامج المجمع ثنائي-المرور أسهل في القراءة والصيانة -القيام بتعديلات عليها مثلا-.

أما المجمعات عالية المستوى وذات الإمكانيات الأكثر تعقيدا, فتوفر تجريدا أكثر للغة Abstraction, يمكن توضيحه فيما يلي:

بناءات تحكم أكثر تقدما Control Structures
إمكانية الإعلان عن وظائف/إجرائات عالية المستوى, واستدعائها.
أنواع بيانات مجردة Abstract عالية المستوى, بما في ذلك الهياكل Structures, السجلات Records, الاتحادات Unions, الأصناف Classes والمجموعات Sets.
معالجة ماكرو Macro متطورة
مميزات البرمجة غرضية التوجه Object-Oriented, مثل التغليف Encapsulation, تعدد الأشكال Polymorphism, التوريث Inheritance, الواجهات Interfaces.
لتفاصيل أخرى, انظر "تصميم اللغة" أدناه.

لاحظ أنه, في حالة الاستخدام المهني العادي, يتم استخدام اللفظ "مجمع" Assembler بشكل غامض: فكثيرا ما يتم استخدامه للإشارة للغة التجميع نفسها, بدلا من الإشارة لـ "أداة التجميع".وبالتالي: فإن عبارة "إن نموذج CP/CMS تم كتابته بلغة التجميع Assembler ذو الاسم S/360" تختلف عن العبارة "إن نموذج ASM-H لهو مجمع Assembler تم استخدامه على نطاق واسع مع S/370".

ليست هناك تعليقات:

إرسال تعليق