# Fitxer COM

Un fitxer COM és un tipus de fitxer executable simple. Sobre els sistemes operatius VAX de Digital Equipment Corporation (DEC) dels anys 70,. COM es va utilitzar com a extensió de nom de fitxer per a fitxers de text que contenien ordres per al sistema operatiu (similar a un fitxer per lots). Amb la introducció del CP/M de Digital Research (un sistema operatiu per a microordinadors), el tipus de fitxers associats habitualment a l'extensió COM va canviar al de fitxers executables. Aquesta convenció es va traslladar més tard a DOS. Fins i tot quan es complementa amb el format de fitxer EXE més general per a executables, els fitxers COM compactes es van mantenir viables i s'utilitzaven amb freqüència sota DOS.
L'extensió de nom de fitxer COM no té cap relació amb el nom de domini d'Internet de primer nivell.com (per "comercial"). Tanmateix, aquesta similitud de nom ha estat explotada pels escriptors de programari maliciós.

## Format binari DOS

El format COM és el format binari original executable utilitzat en CP/M (inclosos SCP i MSX-DOS) així com DOS. És molt senzill; no té cap capçalera (a excepció de CP/M 3), i no conté metadades estàndard, només codi i dades. Aquesta senzillesa exigeix un preu: el binari té una mida màxima de 65.280 (FF00 h) bytes (256 bytes menys de 64 KB) i emmagatzema tot el seu codi i dades en un segment.
Com que no té informació de reubicació, el sistema operatiu el carrega a una adreça preestablerta, a l'offset 0100h immediatament després de la PSP, on s'executa (d'aquí la limitació de la mida de l'executable): el punt d'entrada es fixa a les 0100h. Això no va ser un problema a les màquines de 8 bits, ja que poden abordar un màxim de 64 k de memòria, però les màquines de 16 bits tenen un espai d'adreces molt més gran, motiu pel qual el format va quedar sense ús.
A l'arquitectura de la CPU Intel 8080, només es podrien adreçar 65.536 bytes de memòria (interval d'adreces de 0000h a FFFFh). Sota CP/M, els primers 256 bytes d'aquesta memòria, de 0000h a 00FFh, estaven reservats per a l'ús del sistema per part de la pàgina zero, i qualsevol programa d'usuari s'havia de carregar exactament a les 0100h per ser executat. Els fitxers COM s'ajusten perfectament a aquest model. Abans de la introducció de MP/M i Concurrent CP/M, no hi havia la possibilitat d'executar més d'un programa o comanda alhora: el programa carregat a les 0100h s'executava, i cap altre.
Tot i que el format del fitxer és el mateix a DOS i CP/M,. Els fitxers COM dels dos sistemes operatius no són compatibles; Els fitxers DOS COM contenen instruccions x86 i possiblement crides al sistema DOS, mentre que els fitxers CP/M COM contenen instruccions 8080 i trucades al sistema CP/M (els programes restringits a determinades màquines també podrien contenir instruccions addicionals per a 8085 o Z80).

## Suport a la plataforma

El format encara es pot executar en moltes plataformes modernes basades en Windows NT, però s'executa en un subsistema que emula MS-DOS, NTVDM, que no està present en les variants de 64 bits. Els fitxers COM també es poden executar en emuladors de DOS com DOSBox, en qualsevol plataforma suportada per aquests emuladors.

## Referències

* ↑ stevewhims. «COM Technical Overview - Win32 apps» (en anglès americà), 06-01-2021. [Consulta: 8 desembre 2023].
* ↑ «COM File - What is a .com file and how do I open it?» (en anglès). [Consulta: 8 desembre 2023].
* ↑ «Difference between .com, .exe, and .bat?» (en anglès). [Consulta: 8 desembre 2023].
* ↑ Umar, Muhammad. «COM - DOS Command File Format» (en anglès), 29-06-2021. [Consulta: 8 desembre 2023].