COM-Datei

COM-Datei

Eine COM-Datei ist eine ausführbare Datei in CP/M, MS-DOS und zu MS-DOS kompatiblen Betriebssystemen. Der Name leitet sich aus der Dateinamenserweiterung „.COM“ ab, die für das englische Wort command („Befehl“) steht.

Viele Shell-Werkzeuge wie die MS-DOS-Version von more nutzen dieses Format wie auch kleine, frühe Anwendungen wie das Spiel Alley Cat von IBM.

Inhaltsverzeichnis

Binärformat

Das COM-Format ist vielleicht das einfachste Format ausführbarer Dateien überhaupt; es enthält keine Metadaten – nur Code und Daten – und wird an Offset 0x0100 eines Segmentes geladen und ausgeführt. Durch die Art, nach der das Segmentierungsmodell arbeitet, ist keine Relokation vonnöten.

Die Einfachheit hat jedoch ihren Preis: Die Dateien sind auf Größen von maximal 65.280 (0xFF00) Bytes beschränkt und speichern Code und Daten in einem einzigen Segment. Dies stellte auf 8-Bit-Architekturen kein Problem dar, ist jedoch der Hauptgrund, warum das Format nach der Einführung von 16-Bit-Architekturen und später 32-Bit- und 64-Bit-Architekturen mit ihren weitaus größeren segmentierten Speichern bald aus der Mode kam.

CP/M

Auf den für CP/M typischen Intel-8080-CPU-Architekturen können nur 65.536 Bytes Speicher adressiert werden (Adressbereich 0x0000 bis 0xFFFF). CP/M reserviert die erste Seite dieses Speichers (0x0000 bis 0x00FF) für das System, und ein Anwendungsprogramm muss exakt an Adresse 0x0100 geladen werden, um ausgeführt zu werden. COM-Dateien eignen sich perfekt für dieses Modell. Es ist nicht möglich, mehr als ein Programm oder einen Befehl gleichzeitig auszuführen; nur das an 0x0100 geladene Programm wird ausgeführt.

Ist das erste Byte einer CP/M-COM-Datei 0xC9, so zeigt dies für CP/M 3 das Vorhandensein eines 256-Byte-Headers an. Da 0xC9 der 8080-Befehl für return ist, wird die COM-Datei sofort beendet, wenn sie auf einer früheren Version von CP/M ausgeführt wird, die diese Erweiterung nicht unterstützt.

MS-DOS

Auf einer für MS-DOS nötigen Intel-8086-Architektur sind 1.024 KB Arbeitsspeicher direkt adressierbar; durch jede Segmentadresse (0x0000 bis 0xFFFF) kann auf einen jeweils 64 KB großen Ausschnitt des Speichers zugegriffen werden (siehe Speichersegmentierung des 8086-Prozessors). Die COM-Dateien werden in ein beliebiges, freies Segment ab Offset 0x0100 geladen. Das Betriebssystem nutzt die 256 Byte am Anfang des Segments für das Program Segment Prefix (PSP). Mehrere Programme können gleichzeitig geladen werden; da DOS jedoch ein Singletasking-System ist, werden die Programme verschachtelt ausgeführt, wobei das jeweils höhere Programm erst nach dem Beenden des tieferen Programmes fortgesetzt wird. Nur spezielle TSR-Programme wechseln sich sozusagen mit dem zuletzt gestarteten Programm ab.

Die Dateinamenserweiterung „.COM“ wird unter MS-DOS teilweise auch für, eigentlich falsch benannte, MZ-Dateien verwendet. Beispiele für solche Dateien sind die Programme COMMAND.COM und EDIT.COM einiger DOS-Versionen. MZ-Dateien haben für gewöhnlich die Erweiterung „.EXE“ (engl. executable, ausführbar); DOS ignoriert aber den genutzten Dateinamen und unterscheidet die beiden Formate durch die Magische Zahl der MZ-Dateien.

Austausch beider Formate

Obwohl das Dateiformat unter MS-DOS und CP/M dasselbe ist, können die Programme eines der Systeme nicht unter dem jeweils anderen ausgeführt werden, da MS-DOS-Programme x86-Anweisungen enthielten, während es bei CP/M-Programmen Befehle für 8080-, 8085- oder Z80-CPUs sind. Zusätzlich benötigen MS-DOS-Programme oft Eigenheiten des OS, zum Beispiel Funktionen, die MS-DOS exklusiv über Interrupt 21h zur Verfügung stellt. (Später erschien jedoch das weitestgehend MS-DOS-kompatible DR-DOS, welches auf CP/M basiert und ebenfalls nur auf 8086-CPUs läuft.) Es ist möglich, Fat-COM-Dateien zu erstellen, die auf beiden Prozessorfamilien laufen.

Plattform-Unterstützung

Obwohl das Format nur binären Code für ein CP/M- oder MS-DOS-kompatibles Betriebssystem enthält, sind DOS-COM-Dateien auch auf vielen modernen Windows-basierten Plattformen noch ausführbar. Auf NT-basierten Versionen werden sie dafür in der MS-DOS-Emulationsschicht NTVDM ausgeführt, die bei den 64-Bit-Varianten allerdings nicht mehr vorhanden ist. COM-Dateien können auch über DOS- oder PC-Emulatoren wie DOSEMU oder QEMU auf jeglichen von diesen Emulatoren unterstützten Plattformen ausgeführt werden.

Vorrang bei der Ausführung

Finden sich in einem Ordner sowohl eine COM- als auch eine EXE-Datei gleichen Namens, so zieht COMMAND.COM aus MS-DOS (oder kompatiblen) die COM-Datei vor.[1] Ist die Ausführung der EXE-Datei gewünscht, so kann das ab MS-DOS Version 4.00 durch die Angabe des gesamten Dateinamens mit der Erweiterung explizit erzwungen werden. (Beispiel: Liegt im aktuellen Verzeichnis sowohl eine FOO.COM als auch eine FOO.EXE, so startet der Befehl FOO die COM-Datei und nur FOO.EXE die EXE-Datei).

Computerviren werden manchmal verbreitet, indem dieses Verhalten ausgenutzt wird. Der Virus wird dabei in Dateien mit Namen wie MEM.COM platziert. Es wird dann darauf spekuliert, dass – im gleichen Ordner wie eine korrespondierende EXE-Datei platziert – der Benutzer durch den kürzeren Befehl MEM, ohne Erweiterung, anstatt des Originals MEM.EXE (in MS-DOS enthaltenes Programm zur Speicheranzeige) den Virus ausführt.

Missbrauch

Programmierer von Computerviren nutzen auch aus, dass .com heute mit der gleichnamigen Top-Level-Domain assoziiert wird, indem sie ihre Programme www.(…).com nennen. Wird eine solche Datei als E-Mail versandt, wird dem unbedarften Windowsnutzer eine Internetadresse nach dem Muster www.example.com angezeigt, der dann entgegen seinen Erwartungen nicht (oder nicht nur) die Seite www.example.com öffnet, sondern die Datei www.example mit der Endung .com ausführt.

Einzelnachweise

  1. Microsoft KB35284: Order of Precedence in Locating Executable Files (englisch)

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Com-Datei — Eine Com Datei ist eine ausführbare Datei in CP/M, MS DOS und zu MS DOS kompatiblen Betriebssystemen. Der Name leitet sich aus der Dateinamenserweiterung „.com“ ab, die für das englische Wort command („Befehl“) steht. Viele Shell Werkzeuge wie… …   Deutsch Wikipedia

  • Com — steht für: Com (Osttimor), Ortschaft in Osttimor com! Das Computer Magazin, Computerzeitschrift das Sternbild Haar der Berenike (lat. Coma Berenices ) in der Nomenklatur der Fixsterne Die Abkürzung com, COM steht für: collectivités d outre mer,… …   Deutsch Wikipedia

  • .com — bezeichnet: eine Dateinamenserweiterung für ausführbare Dateien, siehe Com Datei „commercial“ („geschäftlich“), eine internationale Top Level Domain ein Unternehmen, dass denn überwiegenden Teil seines Geschäftes im Internet betreibt, siehe… …   Deutsch Wikipedia

  • COM — steht für: Com (Osttimor), Ortschaft in Osttimor com! Das Computer Magazin, Computerzeitschrift das Sternbild Haar der Berenike (lateinisch: Coma Berenices) in der Nomenklatur der Fixsterne Die Abkürzung com, COM steht für: collectivités d’outre… …   Deutsch Wikipedia

  • Datei-System — Das Dateisystem ist die Ablageorganisation auf einem Datenträger eines Computers. Dateien müssen gelesen, gespeichert oder verschoben werden. Für den Menschen müssen Dateiname und computerinterne Dateiadressen in Einklang gebracht werden. Das… …   Deutsch Wikipedia

  • COM+ — Das Component Object Model [kəmˈpoʊnənt ˈɒbdʒɪkt ˈmɒdl] (Abk. COM) ist eine von Microsoft entwickelte Plattform Technologie, um unter dem Betriebssystem Windows Interprozesskommunikation und dynamische Objekterzeugung zu ermöglichen. COM fähige… …   Deutsch Wikipedia

  • .com — I .com   [Abk. für Command File, dt. »Befehlsdatei«], Dateien: unter dem Betriebssystem MS DOS die Erweiterung des Dateinamens, mit der ausführbare, binäre Programmdateien gekennzeichnet werden. Die Größe einer solchen Datei darf 64 KByte (die… …   Universal-Lexikon

  • Command.com — Die command.com ist der Kommandozeileninterpreter (CLI) der DOS Betriebssysteme, also insbesondere des Microsoft Betriebssystems MS DOS, sowie der darauf basierenden Systeme Microsoft Windows 95, 98, 98 SE und Me, sowie IBM DOS/PC DOS. Neben der… …   Deutsch Wikipedia

  • COMMAND.COM — Die COMMAND.COM ist der Kommandozeileninterpreter des Microsoft Betriebssystems MS DOS, sowie der darauf basierenden Systeme Microsoft Windows 95, 98, 98 SE und ME. Neben der Variante von Microsoft gab oder gibt es auch Entsprechungen in den MS… …   Deutsch Wikipedia

  • MZ-Datei — Unter MS DOS ist eine MZ Datei eine Art von ausführbaren Dateien. Der Name des Dateiformates leitet sich von einer Magischen Zahl am Anfang der Datei im sogenannten „Header“ ab. Sind die ersten beiden Bytes 0x4D5A (MZ, die Initialen von Mark… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”