קובץ COM

קובץ COM הוא פורמט של קובץ הרצה במערכת ההפעלה DOS. זהו אחד משני הסוגים של קובצי הרצה הקיימים ב-DOS, השני הוא EXE (DOS executable).

לקובץ COM פורמט פשוט ביותר. קובץ בפורמט EXE המתקדם יותר כולל, בנוסף לתוכנית עצמה, גם כותר (header) ובו מידע המאפשר למערכת לבצע בזמן הטעינה את התאמת ההפניות היחסיות למקטעי זיכרון לפי הכתובת שבה נטענה התוכנית בפועל (מקטע הבסיס), תהליך הקרוי relocation. קובץ COM, לעומת זאת, כולל רק את הקוד והנתונים של התוכנית ונטען לזיכרון כפי שהוא, ללא כל שינוי. כתוצאה מכך, קובץ COM נטען מהר יותר מקובץ EXE ותופס נפח אחסון קטן יותר. עם זאת, היעדר התמיכה מצד המערכת ב-relocation של קובצי COM מטיל מגבלות משמעותיות על תוכניות בפורמט זה. גודלה המרבי של תוכנית COM הוא 64KB פחות 256 בתים (השמורים ל-PSP) והיא יכולה לטפל במקטע בודד בלבד - מקטע הבסיס - תוך שימוש בהפניות תוך-מקטעיות שאינן מצריכות עדכון בזמן הטעינה (המעבד מחשב את הכתובת האפקטיבית ביחס לאוגר המקטע הרלוונטי). להלכה, תוכנית COM יכולה לבצע relocation בעצמה, אך זוהי פעולה מורכבת למדי ועל פי רוב חסרת תועלת, בהתחשב בתמיכה המובנית ב-relocation של קובצי EXE.

בדומה לפורמט EXE, שמו של פורמט COM נובע מהסיומת הנהוגה בקבצים מסוג זה, אך החל מגרסה 2.0 של DOS זוהי מוסכמה בלבד, ובפועל אין לסיומת תפקיד בקביעת סוג הקובץ. הגורם הקובע הוא קיומו או היעדרו של כותר ה-EXE, המזוהה על ידי הרצף "MZ" (4Dh 5Ah) בתחילת הקובץ.

כאשר קובץ COM נטען ומורץ באמצעות קריאת המערכת INT 21h Function 4Bh (EXEC), מתבצעות הפעולות הבאות (רשימה חלקית):
 מערכת ההפעלה בוחרת את כתובת מקטע הבסיס שבו תיטען התוכנית. כברירת מחדל, תיבחר הכתובת הנמוכה ביותר האפשרית.
 המערכת בונה טבלת PSP עבור התוכנית בתחילת מקטע הבסיס.
 התוכנית נטענת לזיכרון מיד לאחר ה-PSP (בהיסט 100h [256] בתים מתחילת מקטע הבסיס).
 כל הזיכרון הזמין שמעל לכתובת הבסיס מוקצה לתוכנית.
 ארבעת אוגרי המקטע מכילים את כתובת מקטע הבסיס.
 השליטה מועברת לתוכנית באמצעות long jump להיסט 100h ממקטע הבסיס.

השימוש בקובצי COM היה נפוץ בעבר בתוכניות קטנות שנכתבו באסמבלי, בייחוד תוכניות TSR, תוכנות שירות ומנהלי התקנים. דוגמה ידועה לקובץ COM היא מעטפת שורת הפקודה של DOS, COMMAND.COM. חלק מסביבות הפיתוח לא תמכו בפורמט זה, כך שהיה על המתכנת לבנות קובץ EXE ולהמיר אותו לקובץ COM באמצעות הפקודה הייעודית exe2bin . עם התקדמות הטכנולוגיה הפך ההבדל בזמן הטעינה לזניח, ומגבלת הגודל הציבה מחסום בפני המשך פיתוח של תוכנות בפורמט זה. כתוצאה מכך, מערכות הפעלה שפותחו מאוחר יותר לא תמכו בו עוד.

לקריאה נוספת

 הערות שוליים 

COM
קטגוריה:DOS