لغة التجميع: الجسر بين البرمجة والأجهزة

لغة التجميع: الجسر بين البرمجة والأجهزة

(لغة التجميع : assembly language)

ما هي لغة التجميع؟

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

اللغات البرمجية منخفضة المستوى مثل لغة التجميع تعتبر جسرًا ضروريًا بين العتاد الأساسي للحاسوب واللغات البرمجية عالية المستوى مثل بايثون أو جافا سكريبت، التي تُكتب بها برامج البرمجيات الحديثة.

النقاط الرئيسية

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

كيف تعمل لغات التجميع

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

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

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

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

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

مكونات لغة التجميع

Syntax

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

تسمية

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

المشغلون

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

توجيهات

التوجيهات هي تعليمات للمجمّع تخبره بالإجراءات التي يجب أن تحدث أثناء عملية التجميع. تتمثل أهمية التوجيهات في إعلان أو حجز الذاكرة للمتغيرات؛ حيث يمكن استدعاء هذه المتغيرات لاحقًا في العمليات لأداء وظائف أكثر ديناميكية. كما تُستخدم التوجيهات لتقسيم البرامج إلى أقسام مختلفة.

ماكرو

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

Mnemonic

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

التداول عالي التردد

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

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

مزايا وعيوب لغة التجميع

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

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

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

الإيجابيات

  • قد يكون التنفيذ أكثر بساطة مقارنة باللغات الأخرى.

  • التنفيذ عادةً ما يكون أسرع مقارنةً باللغات الأخرى.

  • يتيح التحكم المباشر في الأجهزة

  • قد يبقى الكود أصغر مقارنة باللغات الأخرى

السلبيات

  • قد يكون تعلم البرمجة أكثر تحديًا مقارنة باللغات عالية المستوى.
  • صياغة لغات التجميع صعبة

  • غير قابل للنقل بين الأجهزة

أنواع المجمعات

يجب ترجمة لغة التجميع إلى لغة الآلة باستخدام المجمع. هناك نوعان رئيسيان من المجمعات.

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

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

مثال على كود لغة التجميع

فيما يلي مثال على كود لغة التجميع Netwide Assembler (NASM).

مثال على كود لغة التجميع.

في هذا المثال، تقوم تعليمة SYSCALL في نهاية الكود بتفعيل الجزء من الذاكرة حيث يتم تخزين خدمات نظام التشغيل. بعد ذلك، يتم استخدام الكود RAX لاستدعاء كتابة الكود، ثم RDI للخروج. يتم استخدام وظيفة SYSCALL مرتين لاستدعاء نظام التشغيل وكذلك للإشارة إلى النظام عندما ينتهي الكود وحان وقت الخروج.

ما هو مثال على لغة التجميع؟

تشمل لغات التجميع الأكثر استخدامًا ARM وMIPS وx86.

هل لغة C++ هي لغة تجميع (Assembly)؟

C++ لا يتكون من كود التجميع (assembly code). لغة البرمجة C++ تتكون من كود C++ يقوم المترجم بتحويله إلى كود آلة قابل للتنفيذ.

Python ليست لغة تجميع (Assembly Language). Python هي لغة برمجة عالية المستوى تُستخدم لكتابة البرامج بطريقة أكثر سهولة وقراءة للبشر، بينما لغة التجميع هي لغة منخفضة المستوى تُستخدم للتفاعل المباشر مع مكونات الحاسوب.

يُعتبر بايثون أكثر تقدمًا من لغات التجميع. تُعتبر لغات التجميع لغات منخفضة المستوى، بينما تستخدم اللغات عالية المستوى مثل C، وJava، أو بايثون الأصفار والواحدات بدلاً من الأرقام والرموز والاختصارات.

كيف تُستخدم لغات التجميع اليوم؟

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

الخلاصة

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