استخدامات لغة التجميع

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

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

ألغت لغات الجيل الثاني العديد من مشاكل منح الأخطاء Error-Prone.

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

Advertisements

استخدامات لغة التجميع

تم استخدام هذه اللغات مرة واحدة على نطاق واسع في جميع أنواع البرمجة لذلك، مع الثمانينيات ومع التسعينات على أجهزة الكمبيوتر الصغيرة، تم استبدال هذه اللغات إلى حد كبير بلغات برمجة عالية المستوى high-Level Languages، في البحث عن مزيد من التحسين في “إنتاجية” عمل البرمجة.

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

تشمل الأنظمة التي تستخدم لغات التجميع بشكل شائع: برامج تشغيل الأجهزة والأنظمة المضمنة وأنظمة الوقت الفعلي. Real-Time.

استخدامات لغة التجميع.

تاريخيًا، تمت كتابة عدد كبير جدًا من البرامج بالكامل باستخدام لغة التجميع. تمت كتابة بعض أنظمة التشغيل Operating Systems بلغة التجميع حصريًا.

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

Mainframes صنعت من قبل شركة آيا بي إم ، وعلى الرغم من أنها في النهاية لغة COBOL.

وFORTRAN من خلال استبدال معظم هذا العمل.

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

اعتمدت معظم الحواسيب الصغيرة على رمز مكتوب بخط اليد باستخدام لغة التجميع.

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

قمت بتقليل النسبة المئوية للأخطاء التي تظهر أثناء عمل الأنظمة.

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

وقد يكون هناك عامل نفسي لعب أيضًا دورًا: الجيل الأول من مبرمجي الحواسيب الصغيرة لا يزال يحتفظ بمكانة الهواة والتي يمكن صياغتها في عبارة: “الأسلاك والكماشة”.

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

الأسباب الرئيسية لاستخدام لغة التجميع

هي حجم أقل، مشاكل أقل في النفقات العامة، سرعة أعلى وموثوقية أعلى.

كأمثلة نموذجية للبرامج الرئيسية المكتوبة بلغة التجميع في ذلك الوقت، ستجد نظام التشغيل MS-DOS.

برنامج معالجة الجدول IBM 1-2-3، وLotus 1-2-3، والألعاب الأكثر شعبية لـ Atari 800 عائلة أجهزة الكمبيوتر المنزلية.

في التسعينات، تمت كتابة معظم ألعاب فيديو وحدة التحكم بلغة التجميع.

بما في ذلك معظم ألعاب الشركات من Mega Drive Genesis وSuper Nintendo Entertainment Systems.

وفقًا لبعض المطلعين داخل صناعة البرمجيات.

كانت لغة التجميع هي أفضل لغة حاسوبية يمكن استخدامها للأداء السرعة العالية لأجهزة Sega Saturn.

أجهزة وحدة التحكم التي اشتهرت بتطويرها وألعاب البرمجة بالإضافة إلى لعبة NBA Jam، التي ظهرت في عام 1993 كلعبة أركيدة وأصبحت شائعة جدًا.

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

بما في ذلك: Commodore 64 وAtari ST بالإضافة إلى أجهزة الكمبيوتر المنزلية ZX Spectrum.

سبب عدم كفاءة لغة BASIC في ذلك الوقت استمرار اعتماد هذه الآلات على لغة التجميع.

تم إلقاء اللوم على BASIC لسببين:

لم توفر سرعة تنفيذ عالية مع هذه الأنظمة ولم توفر التسهيلات الكافية للاستفادة بشكل أفضل من قدرات الأجهزة لهذه الأنظمة.

تحتوي بعض الأنظمة، خاصة Amiga، على IDE مع إمكانات تصحيح أخطاء وماكرو عالية، مثل مجمع ASM-One المجاني.

مقارنة بقدرات Microsoft Visual Studio (على الرغم من أن ASM-One متقدم على Microsoft Visual Studio من حيث وقت الإصدار).

تمت كتابة مجمع VIC-20 عبر “Don French” ونشرته شركة “Silk French”.

وقد كتب في برنامج بحجم 1639 بايت فقط، مما يجعل صاحبه يعتقد أنه أصغر مجمع رمزي مكتوب في التاريخ.

يدعم المجمع أنظمة العنونة الرمزية وتعريفات سداسية عشرية وسلسلة من الرموز يسمح المجمع أيضًا بتعبيرات العنوان التي يمكن دمجها مع العمليات: الجمع والطرح والضرب والقسمة المنطقية AND وOR المنطقية ومعاملات الأسي. Exponentiation Operators.

الاستخدام الحالي

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

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

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

التعقيد المتزايد للمعالجات الحديثة يزيد من الصعوبات في كتابة كود محسن يدويًا Hand-Optimized.

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

بسبب التأخيرات الناجمة عن اختناقات الاختناقات المتوقعة مثل عمليات الإدخال الإخراج وعمليات الترحيل.

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

هناك بعض الحالات التي قد يختار فيها الممارسون استخدام لغة التجميع، مثل ما يلي:

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

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

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

التفاعل المباشر مع الأجهزة، على سبيل المثال في برامج التشغيل ومعالجات المقاطعة.

يعد استخدام الإرشادات الخاصة بالمعالج، غير المتاحة للمترجم، مثالًا شائعًا على Bitwise Rotation، والذي يُستخدم في العديد من خوارزميات تشفير الخوارزميات.

عندما تكون هناك حاجة إلى تحسين شديد، على سبيل المثال: المدور الداخلي للحلقة الداخلية في خوارزمية تستهلك المعالج بشكل كبير.

يستفيد مبرمجو الألعاب من إمكانيات الأجهزة لهذه الأنظمة.

مما يتيح تشغيل ألعابهم بشكل أسرع. في حالة وجود نظام به قيود شديدة على الموارد على سبيل المثال: أنظمة مدمجة.

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

إذا لم تكن هناك لغة عالية المستوى -على سبيل المثال: معالج جديد.

كتابة برنامج “Real-Time” الذي يتطلب توقيتًا دقيقًا واستجابات دقيقة، مثل برامج المحاكاة وأنظمة الملاحة الجوية والمعدات الطبية.

على سبيل المثال، في نظام التحكم في الطيران Fly-by-Wire، يجب ترجمة الترجمة.

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

يجب أن تتخلص هذه الأنظمة من أي تأخيرات غير متوقعة قد تنشأ من خلال لغات البرمجة المفسرة، أو عبر مجموعة البيانات المهملة الآلية.

الترحيل أو تعدد المهام الوقائي Preemptive Multitasking

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

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

في المواقف التي تتطلب تدابير أمنية صارمة حيث لا يمكن اعتبارها أمرا مفروغا منه على أنها مأخوذة لمنحها.

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

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

على سبيل المثال: إذا كان Cracking يخرق حماية نسخة البرمجيات المملوكة والملكية.

كتابة ألعاب البرمجيات والتطبيقات الأخرى التي تتضمن حسابات الرسوم البيانية.

كتابة برنامج لمترجم Compiler يقوم بتوليد كود تجميعي، وبالطبع مؤلف كتاب هذا البرنامج سيكون متخصصين في البرمجة بلغة التجميع.

يمكنك معرفة المزيد عن تصميم لغة التجميع

Advertisements
‫0 تعليق

اترك تعليقاً