لغة التجميع

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

تعتبر لغة التجميع هي مجموعة من اللغات ذات المستوى المنخفض Low-Level.

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

المعالجات الدقيقة Microprocessors وحدات التحكم الدقيقة، وبرمجة الدوائر المتكاملة (IC).

حيث تقوم هذه اللغات بتحويل الكود والثوابت اللازمة لبرمجة مبنى معين لوحدة المعالجة المركزية، من تنسيقه القائم على الرمز Symbolic.

بالنسبة إلى نموذج رقمي آخر يسمى “رمز الماكينة”.

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

يعتمد على مجموعة من الاختصارات التي تساعد المبرمجين على تذكر تعليمات البرمجة والسجلات المستخدمة في عمليات البرمجة بسهولة.

لغة التجميع Assembly

هناك لغة تجميع محددة لكل جهاز كمبيوتر، سواء كانت فيزيائية أو افتراضية على عكس معظم لغات البرمجة عالية المستوى.

تعمل عادةً مع معظم أنظمة الكمبيوتر يتم استخدام أداة برمجية تسمى “Assembler” لترجمة الخطوط والتعليمات المشفرة عبر “لغة التجميع” إلى “رمز الجهاز” الذي يتم معالجته.

ويقوم المركب بترجمة تناظرية مثال: سطر مكتوب بلغة التجميع، حيث يتحول إلى خط مكتوب بلغة الآلة، وهذا يسمى One-to-One Mapping.

الجمل / الأسطر المخزنة في ذاكرة الكمبيوتر وتحويلها إلى تعليمات وبيانات يفهمها الجهاز، وهذا يختلف عما يحدث في اللغات عالية المستوى.

حيث تترجم كل جملة عادة إلى عدة أوامر يفهمها الجهاز Machine Instructions.

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

تتضمن معظم المجمعات الحديثة مرفقًا من نوع ماكرو، وتسمى هذه المجمعات وحدات الماكرو. Macro Assemblers.

هناك نوعين من المجمعات Assemblers

يتم تقسيم النوعين على أساس عدد التمريرات من خلال الرمز المطلوب لإنتاج الرمز النهائي، أو البرنامج القابل للتنفيذ القابل للتنفيذ بعبارة أخرى.

النوع الأول

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

النوع الثاني

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

ويستخدم هذه الرموز في الممر الثاني 2ND Pass، أما بالنسبة إلى حل العناوين.

فإن ميزة النوع الأول المعقد، “تمريرة واحدة”، هي بالتأكيد “السرعة” -وهي ليست بنفس الأهمية التي كانت عليها في السابق.

بعد تطور سرعات وقدرات أجهزة الكمبيوتر.

ميزة النوع الثاني من المجمعات “مرتان أعلاه” هو أن رموز البرنامج يمكن أن تعرف في أي مكان بواسطة شفرة المصدر Source Code للبرنامج نتيجة لذلك.

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

أما بالنسبة للمجمعات عالية المستوى ذات القدرات الأكثر تعقيدًا، فهي توفر المزيد من تجريد التجريد، والذي يمكن تفسيره على النحو التالي:

هياكل تحكم أكثر تقدمًا.

القدرة على الإعلان عن الوظائف او الإجراءات رفيعة المستوى واسترجاعها.

أنواع بيانات الملخص عالية المستوى، بما في ذلك الهياكل والسجلات والنقابات والفئات والمجموعات.

معالجة ماكرو متطورة.

ميزات البرمجة الشيئية، مثل التغليف، تعدد الأشكال، الوراثة، والواجهات.

للحصول على تفاصيل أخرى، راجع “تصميم اللغة” أدناه.

لاحظ أنه في حالة الاستخدام المهني المنتظم، يتم استخدام مصطلح “المجمع” بشكل غامض: غالبًا ما يستخدم للإشارة إلى لغة التجميع نفسها، بدلاً من الإشارة إلى “أداة التجميع”.

ومن ثم: العبارة “نموذج CP / CMS مكتوب بلغة”. يختلف المجمع باسم S / 360 عن العبارة “طراز ASM-H هو تجميع المجمع الذي تم استخدامه على نطاق واسع مع S / 370”.

لغة التجميع Assembly

يتكون البرنامج المكتوب بلغة التجميع من سلسلة من التعليمات -Mnemonics، والتي تشبه مجموعة من التعليمات القابلة للتنفيذ.

عندما تتم ترجمة هذا الرمز عبر “Assembler”، يمكن تحميل هذا الرمز في الذاكرة وتنفيذه هنا.

على سبيل المثال، يمكن لمعالج x86 / IA-32 تنفيذ التعليمات التالية المكتوبة برمز ثنائي يمثل لغة الآلة
هذه التعليمات تعني:

انقل القيمة 61h (وهذا يعني النظام العشري قيمة “97”؛ حيث تعني اللاحقة h النظام السداسي العشري.

الجنيه # يعني أن “القيمة 97” لا تعني أن “القيمة المخزنة في عنوان الذاكرة 97”) يتم نقله إلى معالج “AL” المسجل.

تتم كتابة الأمر “move” برمز التشغيل كـ 1011، وينقل القيمة المذكورة في عامل الأمر الثاني، إلى السجل المذكور عبر المعلمة الأولى.

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

لتذكر الأمر واستخدامه، يتم فصل مجموعة المعلمات “برمجة الكمبيوتر” والبيانات التي تتبع شفرة التشغيل بفاصلة “،”؛ ما سبق هو مثال جيد على بيان لغة التجميع.

من الناحية العملية

يسقط العديد من المبرمجين كلمة Mnemonic ويطلقون وصف “Opcode” على كلمة “move”، وهو بالتأكيد خطأ تقني.

عندما يفعلون ذلك، فإنهم يشيرون إلى الرمز الثنائي الذي هو لغة التجميع. آخر.

الأمر التذكرين “من السهل تذكره” مثل أن الأمر move ليس كود تشغيل، ولكنه يمثل أو يشير إلى كود التشغيل.

لذلك، عندما يشير شخص ما إلى “رمز الأمر move”، فهذا يعني الرجوع إلى رمز التشغيل الثنائي ولا يشير إلى الأمر المكتوب بلغة التجميع.

يوجد حاليًا عدد محدود من المبرمجين الذين يحتاجون للتعامل مع النماذج الثنائية التي تمثل رمز التشغيل لتعليمات محددة.

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

Processor Designers

تتم ترجمة لغة التجميع إلى لغة الآلة عن طريق “المجمع”، وتتم العملية العكسية من خلال برنامج يسمى “Disassembler”.

على عكس اللغات عالية المستوى، هناك دائمًا توافق بين التعليمات البسيطة المكتوبة بلغة التجميع والتعليمات المكتوبة بلغة الآلة.

وفي بعض الحالات، يمكن للمخرجات إخراج تعليمات نوع تعليمات Pseudo instructions والتي تمثلها تعليمات “متعددة” بلغة الآلة.

من أجل أداء الوظائف المطلوبة بشكل شائع.

على سبيل المثال، بافتراض أن هناك جهازًا يفتقر إلى الأمر Branch-if-Greater-أو يساوي.

انتقل إلى موقع آخر إذا كانت القيمة تساوي x أو أكبر من x “في مجموعة أوامر المجمع، لحل هذه المشكلة.

يمكن للمجمع توفير  تعليمات مزيفة تجمع بين أوامر “تعيين إذا كان أقل من” و “فرع إذا كان صفر” -يعمل الأمر الأخير مع إخراج الأمر المسبق.

توفر معظم المجمعات ذات الميزات الكاملة لغة ماكرو غنية (سيتم مناقشتها أدناه) يتم استخدامها من قبل شركات البائعين والمبرمجين لإنتاج كود ورموز بيانات أكثر تعقيدًا.

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

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

يمكنك معرفة المزيد من خلال قسم لغات البرمجه

Advertisements
‫0 تعليق

اترك تعليقاً