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

لغة التجميع: قائمة بالمجمعات الخاصة بالهندسات Architectures المختلفة للكمبيوتر





تحتوي الصفحة التالية على قائمة بأنواع مختلفة من المجمعات التي تعمل مع هندسات/أبنية مختلفة من الحواسب, وتحوي القائمة معلومات مرتبطة بكل نوع من أنواع تلك المجمعات:

قائمة بالمجمعات Assemblers
[عدل]مزيد من التفاصيل

لقد تم كتابة ما لا يقل عن عشرات من المجمعات لكل كمبيوتر شخصي, حاسب كبير Mainframe, نظام مطمر Embedded System ولعبة كونسول Console Game, في الماضي والحاضر. ولمطالعة بعض الأمثلة, راجع قائمة المجمعات Assemblers.

وعلى أنظمة يونيكس Unix, غالبا ما يطلع على المجمع التقليدي اسم as, على الرغم من أنه ليس كيان واحد من الكود, لأنه يجري عادة كتابة مجمع جديد لكل بورت Port.وهناك العديد من اصدارات يونيكس Unix تستخدم GAS.

لكل مجمع لهجة خاصة Dialect, داخل مجموعة من المجمعات.وأحيانا, تستطيع بعض المجمعات قراءة اللهجة الخاصة بمجمع آخر, وعلى سبيل المثال, يمكن لمجمع TASM من قراءة كود الـ MASM القديم, لكن العكس ليس صحيحا.ويمتلك مجمعي الـ FASM والـ NASM بناء لغوي متشابه Syntax, لكن كلا منهم يدعم مجموعة مختلفة من الماكرو Macro مما يجعل من الصعب الترجمة من أحدهم للآخر.وبالطبع فإن الأساسيات تظل واحدة, لكن المميزات المتقدمة Advanced Features تختلف.

أيضا, يمكن للغة التجميع أن تكون منقولة Portable عبر عدة أنظمة تشغيل, وعلى وحدة معالجة مركزية CPU واحدة. فاصطلاحات Conventions استدعاء الوظائف لا تختلف كثيرا بين أنظمة التشغيل المختلفة وأحيانا لا تختلف على الإطلاق, وببعض الحرص Care, يمكن الحصول على "نقالية" Portability في لغة التجميع, وعادة يتم ذلك عبر الربط مع مكتبة سي C والتي لا تتغير بين نظم التشغيل.

وعلى سبيل المثال, العديد من الأشياء داخل مكتبة لغة السي libc تعتمد على "ما قبل المعالجة" Preprocessor لتقوم بأشياء مرتبطة بنظام التشغيل OS-Specific, واشياء مرتبطة بلغة السي C-Specific, وتقوم بعمل ذلك للبرنامج قبل أن تبدأ في الترجمة Compiling.وفي واقع الأمر, فإن بعض الوظائف والرموز لا يمكن ضمان وجودها خارج الـ Preprocessor.الأسوأ من ذلك, أن حجم وترتيب البنيات Structs, فضلا عن حجم بعض أنواع من تعريف الأنواع typedefs مثل off_t, لا يوجد تعريف مثل هذه الاشياء في لغة التجميع -بدون مساعدة من ملف خارجي لتحديد هذه القيم Configure Script-, وتختلف حتى بين الإصدارات المختلفة من لينكس Linux, مما يجعل من المستحيل أن يتم استدعاء وظائف من مكتبة السي libc بشكل نقال Portable, غير تلك التي تتعامل بشكل بسيط مع القيم الصحيحة Integers والمؤشرات Pointers كمعاملات.ولمعالجة هذه المسألة, يقوم مشروع FASMLIB (مكتبة للمجمع FASM) بتوفير مكتبة نقالة للمجمع تعمل على منصات Win32 ولينكس Linux, لكنها ليست كاملة بشكل كافي حتى الآن.

بعض لغات برمجة الحاسوب عالية المستوى, مثل لغة السي C ولغة "بورلاند باسكال" Borland Pascal, تدعم التجميع الداخلي Inline Assembly حيث يمكن دمج فقرات صغيرة نسبيا من كود التجميع داخل الكود المكتوب باللغة عالية المستوى.وغالبا ما تحتوي لغات البرمجة Forth على مجمعا يستخدم في كلمات CODE Words.

ويستخدم العديد من الأشخاص نظم "المضاهاة" Emulator من أجل كشف وتصحيح Debug أخطاء البرامج المكتوبة بلغة التجميع.

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

إرسال تعليق