ملف COM

عدد من ملفات COM في نظام التشغيل IBM PC DOS 1.0

ملف COM هو نوع من الملفات التنفيذية البسيطة . في أنظمة تشغيل VAX التابعة لشركة Digital Equipment Corporation (DEC) في سبعينيات القرن الماضي، كان يُستخدم امتداد COM كاسم ملف نصي يحتوي على أوامر تُصدر لنظام التشغيل (على غرار ملف دفعي ). [ 1 ] مع ظهور نظام CP/M من شركة Digital Research (وهو نظام تشغيل للحواسيب الصغيرة مُصمم على غرار TOPS-10 لجهاز PDP-10 )، تغير نوع الملفات المرتبطة عادةً بامتداد COM إلى الملفات التنفيذية. وقد تم اعتماد هذا الامتداد لاحقًا في نظام DOS . وحتى مع إضافة تنسيق ملف EXE الأكثر عمومية للملفات التنفيذية، ظلت ملفات COM المضغوطة قابلة للاستخدام وشائعة الاستخدام في نظام DOS..COM

.COMلا علاقة لامتداد اسم الملف بنطاق الإنترنت الأعلى مستوى ".com " (اختصارًا لـ "تجاري"). ومع ذلك، فقد استغل مطورو البرامج الضارة هذا التشابه في الاسم .

تنسيق DOS الثنائي

يُعدّ تنسيق COM التنسيق التنفيذي الثنائي الأصلي المستخدم في نظامي CP/M (بما في ذلك SCP و MSX-DOS ) و DOS . وهو بسيط للغاية؛ إذ لا يحتوي على ترويسة (باستثناء  ملفات CP/M 3)، [ 2 ] ولا يتضمن أي بيانات وصفية قياسية ، بل يقتصر على التعليمات البرمجية والبيانات فقط. هذه البساطة لها ثمنها: فقد صُمم الملف الثنائي بحيث لا يتجاوز حجمه 65280 بايت (FF00 h ) ( أي  أقل بـ 256 بايت من 64 كيلوبايت) ،  ويخزن جميع التعليمات البرمجية والبيانات في مقطع ذاكرة واحد من نوع 8086 .

على الرغم من أن ملفات COM تُكتب كما لو كانت جميعها تبدأ من نقطة دخول ثابتة واحدة (0100 h[ ملاحظة 1 ] يختار نظام MS-DOS مقطع الذاكرة 64 كيلوبايت الذي سيتم تحميل الملف فيه، وبالتالي لا توجد مشكلة في وجود عدة ملفات COM في الذاكرة في الوقت نفسه. [ 3 ] تُوضع البايتات بدءًا من الإزاحة 0100 h (256 عشريًا) لأن البايتات السابقة محجوزة لاستخدام النظام (أي بادئة مقطع برنامج DOS ).

قبل نظام التشغيل MS-DOS ومعالج 8086، في بنية معالج Intel 8080 ، كان بالإمكان الوصول إلى 65,536 بايت فقط من الذاكرة (نطاق العناوين من 0000h إلى FFFFh). في نظام CP/M، كانت أول 256 بايت من هذه الذاكرة، من 0000h إلى 00FFh، محجوزة لاستخدام النظام بواسطة الصفحة الصفرية ، وكان يجب تحميل أي برنامج مستخدم عند العنوان 0100h تحديدًا ليتم تنفيذه. [ ملاحظة 1 ] صُممت ملفات COM الخاصة بنظام MS-DOS لمحاكاة هذا التكوين لتسهيل نقل البرامج من نظام CP/M. [ 4 ]

على الرغم من أن تنسيق الملف هو نفسه في DOS و CP/M، إلا أن ملفات COM لنظامي التشغيل غير متوافقة؛ تحتوي ملفات COM الخاصة بنظام DOS على تعليمات x86 وربما استدعاءات نظام DOS ، بينما تحتوي ملفات COM الخاصة بنظام CP/M على تعليمات 8080 واستدعاءات نظام CP/M (قد تحتوي البرامج المقتصرة على أجهزة معينة أيضًا على تعليمات إضافية لـ 8085 أو Z80 ).

صُمم نظام التشغيل MS-DOS للعمل على معالج Intel 8086 الذي كان بإمكانه الوصول إلى ستة عشر "قطاعًا" مختلفًا من الذاكرة، يحتوي كل منها على 65,536 بايت من الذاكرة. ولأن ملفات COM لم تكن مصممة أبدًا للعمل على قطاعات متعددة، ابتكرت مايكروسوفت تنسيق ملف بديلًا يسمح بتشغيل برامج أكبر حجمًا: .EXE . [ 5 ]

تقوم ملفات COM في نظام DOS بتعيين جميع سجلات قطاعات x86 إلى القيمة نفسها، وسجل مؤشر المكدس (SP) إلى إزاحة آخر كلمة متاحة في أول  قطاع بحجم 64 كيلوبايت (عادةً FFFEh)، أو إلى أقصى حجم للذاكرة المتاحة في الكتلة التي تم تحميل البرنامج فيها. في الحالتين، يكون حجم البرنامج مضافًا إليه 256 بايت على الأقل من حجم المكدس، أيهما أصغر. وبالتالي، يبدأ المكدس من أعلى قطاع الذاكرة المقابل ويتجه نزولًا من هناك. [ 6 ] [ 7 ]

في واجهة برمجة تطبيقات DOS 1.x الأصلية ، المشتقة من واجهة برمجة تطبيقات CP/M، كان إنهاء برنامج ملف COM يتم باستدعاء الدالة INT 20h (إنهاء البرنامج) أو الدالة INT 21h Function 0، التي تؤدي الغرض نفسه. وكان على المبرمج التأكد من تطابق قيم سجلات مقطعي التعليمات والبيانات عند إنهاء البرنامج لتجنب أي عطل محتمل في النظام. مع أن هذه الطريقة قابلة للاستخدام في جميع إصدارات DOS، إلا أن مايكروسوفت أوصت باستخدام الدالة INT 21h Function 4Ch لإنهاء البرنامج بدءًا من DOS 2.x، حيث لا تتطلب هذه الطريقة تطابق قيم سجلات مقطعي البيانات والتعليمات.

في نظام CP/M  3، إذا كان البايت الأول من ملف COM هو C9h، فسيكون هناك رأس بحجم 256 بايت؛ [ 2 ] وبما أن C9h يُطابق تعليمة 8080RET ، فهذا يعني أن ملف COM سيتوقف فورًا إذا تم تشغيله على إصدار أقدم من CP/M لا يدعم هذا الامتداد. (نظرًا لأن مجموعات تعليمات 8085 وZ80 هي مجموعات فرعية من مجموعة تعليمات 8080، فإن هذا يعمل على جميع المعالجات الثلاثة). يُعد C9h رمز عملية غير صالح على 8088/8086 ، ولكنه رمز عملية LEAVE منذ 80188/80186 . على الرغم من إمكانية ذلك، فمن غير المرجح استخدام LEAVE كأول تعليمة في برنامج صالح. لذلك ، يرفض مُحمِّل الملفات التنفيذية في بعض إصدارات DOS ملفات COM التي تبدأ بـ C9h ، لتجنب حدوث عطل.

قد تنتهي أسماء الملفات بـ .COM، ولكنها لا تكون بالصيغة البسيطة المذكورة أعلاه؛ ويُشار إلى ذلك برقم سحري في بداية الملف. على سبيل المثال، ملف COMMAND.COM في DR DOS 6.0 هو في الواقع بصيغة DOS التنفيذية ، ويُشار إلى ذلك بأن أول بايتين هما 4D 5A( MZبصيغة ASCII)، وهما الحرفان الأولان من اسم مارك زبيكوفسكي .

البرامج الكبيرة

في نظام DOS، لا يوفر مُحمِّل أو بيئة التنفيذ أي إدارة للذاكرة لملفات COM . فجميع الذاكرة متاحة لملف COM مباشرةً. بعد التنفيذ، يُعاد تحميل واجهة أوامر نظام التشغيل، COMMAND.COM . هذا يُتيح إمكانية أن يكون ملف COM بسيطًا جدًا، باستخدام مقطع واحد ، أو معقدًا للغاية، مزودًا بنظام إدارة ذاكرة خاص به. مثال على برنامج معقد هو COMMAND.COM، واجهة أوامر DOS، التي توفر مُحمِّلًا لتحميل برامج COM أو EXE أخرى . في نظام COM، يمكن تحميل وتشغيل برامج أكبر (حتى حجم الذاكرة المتاحة)، لكن مُحمِّل النظام يفترض أن جميع التعليمات البرمجية والبيانات موجودة في المقطع الأول، ويقع على عاتق برنامج COM توفير أي تنظيم إضافي. يمكن التعامل مع البرامج الأكبر من الذاكرة المتاحة، أو مقاطع البيانات الكبيرة، عن طريق الربط الديناميكي ، إذا تم تضمين التعليمات البرمجية اللازمة في برنامج COM. ميزة استخدام تنسيق COM بدلًا من EXE هي أن الصورة الثنائية عادةً ما تكون أصغر حجمًا وأسهل في البرمجة باستخدام مُجمِّع . [ 8 ] بمجرد توفر المترجمات والروابط ذات القدرة الكافية، لم يعد من المفيد استخدام تنسيق COM للبرامج المعقدة.

دعم المنصة

لا يزال هذا التنسيق قابلاً للتنفيذ على العديد من منصات ويندوز إن تي الحديثة ، ولكنه يُشغَّل في نظام فرعي لمحاكاة نظام التشغيل إم إس-دوس ، يُسمى NTVDM ، وهو غير موجود في الإصدارات ذات 64 بت . ويمكن تشغيل ملفات COM أيضًا على برامج محاكاة نظام التشغيل دوس مثل DOSBox ، على أي منصة تدعمها هذه البرامج.

استخدمه لأسباب تتعلق بالتوافق

تستخدم أنظمة التشغيل المبنية على نظام ويندوز إن تي امتداد .com لعدد قليل من الأوامر الموروثة من نظام MS-DOS، على الرغم من أنها تُنفذ حاليًا كملفات .exe . سيتعرف نظام التشغيل على رأس ملف .exe وينفذها بشكل صحيح رغم امتداد .com غير الصحيح تقنيًا. (في الواقع، يمكن إعادة تسمية أي ملف .exe إلى .com وسيظل يعمل بشكل صحيح). يضمن استخدام امتداد .com الأصلي لهذه الأوامر التوافق مع ملفات الدفعات القديمة لنظام DOS التي قد تشير إليها بأسمائها الأصلية الكاملة. هذه الأوامر هي CHCP: DISKCOMPو DISKCOPYو و FORMATو MODEو MOREو TREE. [ 9 ]

تفضيل التنفيذ

في نظام DOS، إذا احتوى مجلد على ملف COM وملف EXE بنفس الاسم، فسيتم اختيار ملف COM للتنفيذ بشكل تفضيلي عند عدم تحديد امتداد. على سبيل المثال، إذا احتوى مجلد في مسار النظام على ملفين باسمي COM foo.comو foo.exeEXE، فسيتم تنفيذ ما يلي foo.com:

C:\>foo

يمكن للمستخدم الراغب في التشغيل foo.exeاستخدام اسم الملف الكامل بشكل صريح:

C:\>foo.exe

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

في أنظمة ويندوز NT ومشتقاتها ( ويندوز 2000 ، ويندوز XP ، ويندوز فيستا ، وويندوز 7 )، يُستخدم متغير البيئة PATHEXT لتجاوز ترتيب الأفضلية (والامتدادات المقبولة) لاستدعاء الملفات دون تحديد الامتداد من سطر الأوامر. لا تزال القيمة الافتراضية تضع الملفات قبل الملفات الأخرى. يشبه هذا إلى حد كبير ميزة كانت موجودة سابقًا في سلسلة معالجات سطر الأوامر الموسعة من JP Software، وهي 4DOS و 4OS2 و 4NT ..com.exe

الاستخدام الخبيث لامتداد .com

استغل بعض مبرمجي فيروسات الحاسوب جهل مستخدمي الحاسوب المعاصرين بامتداد الملفات ".com" وتنسيقها الثنائي، بالإضافة إلى معرفتهم الواسعة بنطاق الإنترنت ".com ". وقد تم إرسال رسائل بريد إلكتروني بمرفقات تحمل أسماء مشابهة لـ "www.example.com". سيظن مستخدمو نظام التشغيل مايكروسوفت ويندوز غير الحذرين، عند النقر على مثل هذا المرفق، أنهم سيبدأون بتصفح موقع باسم "www.example.com" ، لكنهم بدلاً من ذلك سيشغلون ملف الأوامر الثنائي المرفق ، مما يمنحه صلاحيات كاملة لفعل ما يشاء بأجهزتهم.http://www.example.com/www.example

لا يوجد شيء خبيث في تنسيق ملف COM نفسه؛ هذا استغلال لتضارب الأسماء العرضي بين ملفات أوامر .com ومواقع الويب التجارية .com .

انظر أيضاً

ملحوظات

  1. في معظم إصدارات نظام التشغيل CP/M ، كانت بداية صفحة معالجة البرامج (TPA) عند الإزاحة +100h، ولم يسبقها في الذاكرة سوى الصفحة الصفرية عند الإزاحة +0h. اختلفت بعض الإصدارات لأسباب تتعلق بالأجهزة، بما في ذلك نظام CP/M الخاص بجهاز Heath H89 ، حيث كانت تبدأ عند الإزاحة +4300h (ولأغراض التوافق، وُجد تعديلٌ في أجهزة Magnolia Microsystems لتعيين ذاكرة القراءة فقط (ROM) عند +100h بعد بدء التشغيل)، أو نظام CP/M الخاص بجهازي TRS-80 Model I و TRS-80 Model III ، حيث كانت البرامج تُحمّل عند الإزاحة +0h.

مراجع

  1. كريستيان، برايان؛ ماركسون، توم؛ سكرينتا، ريتش (محررون). "القسم 5.3". كتاب إرشادات استخدام PDP-11 (  الطبعة الأولى المنقحة). مؤرشف من الأصل بتاريخ 1 أغسطس 2018. تم الاطلاع عليه بتاريخ 1 أغسطس 2018 .(ملاحظة: يحتوي على مرجع لنظام التشغيل RT-11 الذي يعمل على الكمبيوتر المصغر PDP-11 ، والذي يوضح في القسم 5.3 أن .COM يستخدم للإشارة إلى ملف أوامر.)
  2. 1 2 إليوت، جون سي؛ لوبوشينسكي، جيم (2002) [11-04-1998]. "رأس ملف COM لنظام CP/M" . Seasip.info . مؤرشف من الأصل في 01-08-2018.
  3. رولينز، دان (1985). "بدء تشغيل البرنامج وإنهاؤه" . مرجع المساعدة التقنية . شركة فلامبو للبرمجيات . تم الاسترجاع في 1 يونيو 2026 .
  4. نيكاسيك، ميخال (13 سبتمبر 2011). "من يحتاج إلى التفاف العنوان على أي حال؟" . متحف نظام التشغيل OS/2 . تم الاسترجاع في 1 يونيو 2026. تم توفير هذا النموذج لتبسيط ترجمة برامج 8080/Z80 إلى كود 8086، ولا يُنصح باستخدامه للبرامج الجديدة.
  5. سامرز، جيسون. "ملف تنفيذي لنظام MS-DOS" . حل مشكلة تنسيق الملف . تم الاطلاع عليه بتاريخ 1 يونيو 2026. يُعد تنسيق MS-DOS EXE (أو DOS EXE)، المعروف أيضًا باسم تنسيق MZ، تنسيق ملف تنفيذي يستخدمه نظام MS-DOS بشكل أساسي. وهو خليفة تنسيق COM.
  6. بول، ماتياس ر. (2002-10-07) [2000]. "رد: تشغيل ملف COM" . مجموعة الأخبار : alt.msdos.programmer . تم الاسترجاع في 2017-09-03 . {{cite newsgroup}}: CS1 maint: deprecated archiveal service ( link )(ملاحظة: يحتوي على تفاصيل حول اصطلاحات استدعاء برنامج COM في نظام التشغيل DOS.)
  7. لونت، بنيامين "بن" د. (2020). "سجلات بدء تشغيل DOS .COM" . شركة فوريفر يونغ للبرمجيات . مؤرشف من الأصل بتاريخ 12 نوفمبر 2020. تم الاطلاع عليه بتاريخ 14 ديسمبر 2021 .
  8. سكانلون، ليو ج. (1991). "الفصل 2". إجراءات لغة التجميع لنظام التشغيل MS-DOS ( الطبعة الثانية). كتب ويندكريست. ص 16. ISBN   0-8306-7649-X.
  9. "أوامر ويندوز" . مايكروسوفت. 2023-04-26.