منتدى رواية عشق

منتدى رواية عشق (http://www.r-eshq.com/vb/index.php)
-   ϟ تَطويـر المُنتديـات ϟ (http://www.r-eshq.com/vb/forumdisplay.php?f=52)
-   -   لغة التجميع (http://www.r-eshq.com/vb/showthread.php?t=152265)

Şøķåŕą 01-17-2022 08:05 PM

لغة التجميع
 
في برمجة الحاسوب، لغة التجميع أو لغة المُجمع (بالإنجليزية: Assembly Languages)‏ والتي يمكن اختصارها إلى (asm)، هي أي لغة برمجة منخفضة المستوى يوجد بها تطابق قوي جدًا بين التعليمات المستخدمة في اللغة وتعليمات لغة الآلة الخاصة بمعمارية الحاسوب. نظرًا لأن التجميع يعتمد على تعليمات لغة الآلة، فقد تم تصميم كل لغة تجميع لمعمارية كمبيوتر محددة واحدة بالضبط. قد تسمى لغة التجميع أيضًا رمز الآلة الرمزي.

يتم تحويل لغة التجميع إلى لغة آلة قابلة للتنفيذ بواسطة البرنامج المساعد المشار إليه بإسم المُجمع. يشار إلى عملية التحويل بإسم التجميع، كما هو الحال في تجميع الشيفرة المصدرية. عادةً ما تحتوي لغة التجميع على جملة واحدة لكل تعليمه للآلة (1:1)، ولكن التعليقات والجمل هي توجيهات للمُجمِّع، ماكرو، وغالبًا ما يتم أيضًا دعم التسميات الرمزية لمواقع البرامج والذاكرة.

يُنسب مصطلح المُجمع (بالإنجليزية: assembler)‏ بشكل عام إلى موريس ويلكس وديفيد ويلر وستانلي جيل في كتابهم الصادر عام 1951 بعنوان "إعداد البرامج لجهاز كمبيوتر رقمي إلكتروني" (بالإنجليزية: The preparation of programs for an electronic digital computer)‏، والذي قام باستخدام المصطلح ليعني "برنامج يجمع برنامجًا آخر يتكون من عدة أقسام في برنامج واحد".

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

تسمى الخطوة الحسابية عندما يقوم المُجمّع بمعالجة برنامج بوقت التجميع.
تركيب لغة التجميع
تستخدم لغة التجميع أسلوب ذاكري (مُعتمد علي الذاكرة بشكل كبير) لتمثيل كل من التعليمات أو كود التشغيل المنخفض المستوى للآلة، وأيضًا كل سجل معماري وحقل البت وما إلى ذلك. تتطلب العديد من العمليات معاملًا واحدًا أو أكثر من أجل تكوين تعليمات كاملة. تسمح معظم المُجمعات بالثوابت والسجلات والتسميات المُسماة لمواقع البرامج والذاكرة، ويمكنها حساب التعبيرات للمعاملات. وبالتالي، يتم تحرير المبرمجين من الحسابات المتكررة المملة وتكون برامج المجمّع أكثر قابلية للقراءة من لغة الآلة. اعتمادًا على المعمارية، يمكن أيضًا دمج هذه العناصر للحصول على تعليمات محددة أو أوضاع التوجيه باستخدام إزاحات أو بيانات أخرى بالإضافة إلى العناوين الثابتة. تقدم العديد من المُجمعات آليات إضافية لتسهيل تطوير البرنامج، والتحكم في عملية التجميع، والمساعدة في تصحيح الأخطاء.

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

وبصفة عامة، فإن كتابة المُجمعات -لأن المُجمع أساسا عبارة عن برنامج يتم كتابته- أسهل من كتابة مترجمات اللغات عالية المستوى، وقد ظهرت المُجمعات منذ خمسينات القرن الماضي. وتقوم المُجمعات، خصوصا تلك المعتمدة على معمارية/هندسة حاسوبية من نوع RISC، مثل نماذج مبس (MIPS) وسبارك (SPARK) من شركة صن مايكروسيستمز وPA-RISC من شركة هيوليت باكارد ومعالجات (x86-64) بالوصول لجدولة التعليمات للدرجة المثلى، من أجل استغلال وحدة المعالجة المركزية أكفأ استغلال.

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

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

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

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

بناءات تحكم (Control Structures) أكثر تقدما
إمكانية الإعلان عن وظائف/إجرائات عالية المستوى، واستدعائها.
أنواع بيانات مجردة (Abstract) عالية المستوى، بما في ذلك الهياكل (Structures) والسجلات (Records) والاتحادات (Unions) والأصناف (Classes) والمجموعات (Sets).
معالجة ماكرو متطورة
تصميم اللغة
وحدات الماكرو
تدعم العديد من المُجمعات وحدات الماكرو (بالإنجليزية: Macros)‏، وهي عبارة عن رموز مُعرفة عن طريق المبرمج وتحوي مجموعة من سطور النص المتسلسلة. هذا التسلسل للسطور النصية، قد يحوي سلسلة من التعليمات، أو سلسلة من تعليمات Pseudo-Ops خاصة بالبيانات. وطالما تم تعريف الماكرو عبر استخدام الـ Pseudo-Op المناسب، فإنه من الممكن استخدام اسمه، مثلما يتم استخدام أسماء الأوامر Mnemonic تماما. وعندما يقوم المُجمع بمعالجة جملة من تلك النوعية، فإنه يقوم باستبدال الجملة التي تحوي اسم الماكرو بالسطور النصية المرتبطة بذلك الماكرو. بعد ذلك، يقوم بمعالجة تلك السطور كما لو أنها قد ظهرت في ملف الشيفرة المصدرية (متضمنا، كما يحدث في بعض المُجمعات، محتويات أي ماكرو قد يظهر في السطور المُستبدلة -ماكرو داخل ماكرو-).

وبما أن وحدات الماكرو يمكن أن تحمل أسماء قصيرة يتم توسعتها إلى سطور طويلة من الكود، فإن وحدات الماكرو يمكن أن تستخدم لتجعل البرامج المكتوبة بلغة التجميع تبدو وكأنها أقصر (بمعنى أن يتطلب بناء التطبيق عددا أقل من سطور الكود، كما هو الحال مع لغات البرمجة عالية المستوى). ويمكن أيضا أن يتم استخدامها لإضافة هياكل Structures عالية المستوى إلى البرامج المكتوبة بلغة التجميع، ويمكن أن تقدم -بشكل اختياري- كود يستخدم لإدارة و إصلاح الأخطاء البرمجية بشكل ضمني، عبر المعاملات وعبر خصائص أخرى.

معظم المُجمعات تمتلك وحدات ماكرو مدمجة Built-in من أجل الاستدعائات عبر النظام System Calls ومن أجل بعض تسلسلات الكود الخاصة.

وغالبا ما تسمح المُجمعات لوحدات ماكرو بأن تمتلك معاملات. وبعض المُجمعات تمتلك لغة ماكرو معقدة جدا، وتقوم بدمج عناصر هذه اللغة عالية المستوى للقيام بوظائف متعددة: معاملات اختيارية Optional Parameters، متغيرات رمزية، جمل شرطية، معالجة لسلاسل الحرفية Strings، عمل عمليات حسابية، وجميع تلك الأشياء يمكن إعادة استخدامها أثناء تنفيذ وحدات ماكرو بعينها، وتسمح -تلك المُجمعات- لوحدات الماكرو بحفظ السياق Context أو تبادل المعلومات بين بعضها البعض. ولذلك، فإن الماكرو يمكنه توليد عدد ضخم من تعليمات لغة التجميع أو من تعريفات البيانات، استنادا إلى معاملات الماكرو Arguments. ويمكن استخدام ذلك لتوليد هياكل بيانات ذات شكل "سجلي" Record-Style، ويمكن استخدام ذلك أيضا لتولييد دوارات مبسوطة Unrolled Loops، على سبيل المثال، ويمكن أيضا استخدام نفس التقنية في توليد خوارزميات كاملة تستند على معاملات معقدة. ويمكن اعتبار مؤسسة تستخدم هذه النوعية من لغات التجميع والتي تم تمديد قدراتها بشكل مكثف عبر استخدام مجموعة وحدات الماكرو، يمكن اعتبارها وكأنها تستخدم لغة برمجة عالية المستوى، حيث أن مبرمجي الشركة لا يعملون مع عناصر الكمبيوتر المفاهيمية ذات المستوى المنخفض (مثال: لا يعملون مع المسجلات).

أيــلُولَ 01-18-2022 02:03 AM

-


يعطيك الف عافيه للجلب
سلمت اناملك لهذا للطرح
عميق الود.~

O S C A R 01-18-2022 10:51 AM

تسلم يدينك يارب
ربي يعطيك الف عافيه يالغاليه
ويسسعدك
على هذا الموضوع الرااقي
دمت بحفظ الرحمن .
احترامي وتقديري :eqb16:

- سمَـا. 01-18-2022 11:55 AM

-














دام عطائِك يَ طُهر ..
ولاحُرمنا انتقائِك المُميز والمُختلِف
حفظك الله من كل مكروه.

بنت الشام 01-18-2022 07:10 PM

طرح في غايه آلروعه وآلجمال
سلمت آناملك على الانتقاء الاكثر من رائع
ولاحرمنا جديدك القادم والشيق
ونحن له بالإنتظار,,~

♡ Šąɱąя ♡ 01-18-2022 11:42 PM

سلمت يمينك على ما نثرت من رقي و إبداع
أتمنى لكـ دوام التألق و التميز
تقديري يسبقه إحترامي


الساعة الآن 05:35 PM

Powered by vBulletin® Copyright ©2024, Trans. By Soft
تنويه : المشاركات المطروحة تعبر عن وجهة نظر أصحابها وليس بالضرورة تمثل رأي أدارة الموقع