لغة التجميع: الفرق بين النسختين

تم إضافة 1 بايت ، ‏ قبل 8 أشهر
ط (بوت:إضافة 1 تصنيف)
وسوم: تحرير من المحمول تعديل بتطبيق المحمول تعديل بتطبيق أندرويد
عادة ما يقوم أي مجمع حديث بتكوين كود غرضي/نهائى 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 للبرنامج.
مستخدم مجهول