مُجمِّع على مستوى الشبكة

يُعدّ مُجمِّع الشبكة ( NASM ) مُجمِّعًا ومُفكِّكًا لبنية Intel x86 . يُمكن استخدامه لكتابة برامج 16 بت ، و 32 بت ( IA-32 )، و 64 بت ( x86-64 ). ويُعتبر من أشهر المُجمِّعات لنظام Linux ورقائق x86 . [ 3 ]

كتبه في الأصل سيمون تاتام بمساعدة جوليان هول. اعتبارًا من عام 2016يتولى صيانته فريق صغير بقيادة إتش. بيتر أنفين . [ 4 ] وهو برنامج مفتوح المصدر تم إصداره بموجب شروط ترخيص BSD المبسط (بندين) . [ 5 ]

سمات

يمكن لبرنامج NASM إخراج عدة صيغ ثنائية، بما في ذلك COFF وOMF و a.out وصيغة الملفات التنفيذية والربط (ELF) و Mach-O والملفات الثنائية (.bin، وهي صور أقراص ثنائية تُستخدم لتجميع أنظمة التشغيل )، مع العلم أن التعليمات البرمجية المستقلة عن الموضع مدعومة فقط لملفات كائنات ELF . كما يمتلك البرنامج صيغة ثنائية خاصة به تُسمى RDOFF. [ 6 ]

تتيح صيغ الإخراج المتنوعة إعادة توجيه البرامج إلى أي نظام تشغيل x86 تقريبًا. كما يمكنها إنشاء ملفات ثنائية مسطحة ، قابلة للاستخدام في كتابة برامج الإقلاع ، وصور ذاكرة القراءة فقط (ROM)، وفي جوانب مختلفة من تطوير أنظمة التشغيل. [ 6 ] ويمكن تشغيلها على منصات غير x86 (إذا تم تجميع NASM نفسه لتلك المنصة) كمجمع متقاطع ، مثل PowerPC و SPARC ، على الرغم من أنها لا تستطيع إنشاء برامج قابلة للاستخدام بواسطة تلك الأجهزة.

يستخدم NASM صيغةً معدلةً من صيغة تجميع Intel بدلاً من صيغة AT&T . [ 7 ] كما أنه يتجنب ميزات مثل التوليد التلقائي لتجاوزات المقاطع (والتوجيه ASSUME ذي الصلة) المستخدمة في MASM والمجمعات المتوافقة. [ 6 ]

تطوير

تم إصدار النسخة 0.90 من برنامج NASM في أكتوبر 1996. [ 5 ]

صدرت النسخة 2.00 في 28 نوفمبر 2007، مضيفةً دعمًا لامتدادات x86-64 . [ 4 ] لا تُرفع نسخ التطوير إلى موقع SourceForge.net ، ولكنها تُحفظ في GitHub مع توفر لقطات ثنائية من صفحة المشروع على الويب.

في يوليو 2009، مع الإصدار 2.07، تم إصدار NASM بموجب ترخيص BSD المبسط (ذي البندين). سابقًا، ولأنه كان مرخصًا بموجب ترخيص LGPL ، فقد أدى ذلك إلى تطوير Yasm، وهو إعادة كتابة كاملة لـ NASM بموجب ترخيص BSD الجديد . وقد وفر Yasm دعمًا لمعمارية x86-64 قبل NASM، كما أضاف دعمًا لبنية GNU Assembler .

RDOFF

يستخدم المطورون تنسيق ملف الكائن الديناميكي القابل للنقل (RDOFF) لاختبار سلامة قدرات إخراج ملفات الكائن في برنامج NASM. يعتمد هذا التنسيق بشكل كبير على البنية الداخلية لبرنامج NASM، [ 8 ] ويتألف أساسًا من رأس يحتوي على تسلسل استدعاءات وظائف برنامج التشغيل، متبوعًا بمصفوفة من الأقسام التي تحتوي على التعليمات البرمجية أو البيانات القابلة للتنفيذ. تتضمن حزمة توزيع NASM أدوات لاستخدام هذا التنسيق، بما في ذلك رابط ومحمل.

حتى إصدار النسخة 0.90 في أكتوبر 1996، كان برنامج NASM يدعم إخراج الملفات التنفيذية ذات التنسيق المسطح فقط (مثل ملفات COM ). في النسخة 0.90، أضاف سيمون تاتام دعمًا لواجهة إخراج ملفات الكائنات، وملفات DOS بصيغة .OBJ للبرامج ذات 16 بت فقط. [ 9 ]

وبالتالي، افتقر برنامج NASM إلى تنسيق كائنات 32 بت. ولمعالجة هذا النقص، وكتمرين لتعلم واجهة ملفات الكائنات، قام المطور جوليان هول بتجميع الإصدار الأول من RDOFF، والذي تم إصداره في الإصدار 0.91 من NASM. [ 9 ]

منذ هذا الإصدار الأولي، طرأ تحديث رئيسي واحد على تنسيق RDOFF، حيث أُضيف مؤشر طول السجل إلى كل سجل رأس، [ 10 ] مما يسمح للبرامج بتجاوز السجلات التي لا تتعرف على تنسيقها، ودعم مقاطع متعددة؛ إذ كان RDOFF1 يدعم ثلاثة مقاطع فقط: النص ، والبيانات ، و bss (التي تحتوي على بيانات غير مهيأة). [ 8 ]

تم إيقاف استخدام تنسيق RDOFF بشكل كبير وتم تعطيله بدءًا من NASM 2.15.04. [ 11 ]

انظر أيضاً

مراجع

  1. "الإصدار 3.02" . 29 يونيو 2026. تم الاطلاع عليه بتاريخ 29 يونيو 2026 .
  2. "NASM، مُجمِّع الشبكة" . GitHub . 25 أكتوبر 2021.
  3. رام نارايان. "مجمعات لينكس: مقارنة بين GAS وNASM" . آي بي إم . مؤرشف من الأصل في 3 أكتوبر 2013. اثنان من أشهر المجمعات لنظام لينكس، وهما GNU Assembler (GAS) وNetwide Assembler (NASM).
  4. 1 2 "مجمع الشبكة على مستوى الشبكة" . تم الاطلاع عليه بتاريخ 27 يونيو 2008 .
  5. 1 2 NASM – مُجمِّع الشبكة – الإصدار 3.01 – الملحق ج: تاريخ إصدارات NASM ، 2025، ويكي بيانات Q137260489 ، مؤرشف من الأصل في 6 ديسمبر 2025 
  6. 1 2 3 "دليل NASM" . مؤرشف من الأصل بتاريخ 23 فبراير 2009. تم الاطلاع عليه بتاريخ 15 أغسطس 2009 .
  7. راندال هايد . "NASM: مُجمِّع الشبكة" . مؤرشف من الأصل في 12 سبتمبر 2010. تم الاطلاع عليه في 27 يونيو 2008 .
  8. 1 2 "دليل NASM الفصل 6" . تم الاطلاع عليه بتاريخ 27 يونيو 2008 .
  9. 1 2 "NASM CVS" . 8 يونيو 2008. تم الاطلاع عليه في 27 يونيو 2008 .
  10. "V1-V2.txt" . 4 ديسمبر 2002. تم الاطلاع عليه في 27 يونيو 2008 .
  11. "تنسيق ملف الكائن الديناميكي القابل للنقل (مهمل)" .

للمزيد من القراءة