Compiler für COM-Files



  • Hallo!

    Welchem C-Compiler für Windows könnt ihr mir empfehlen, wenn ich COM-Dateien erstellen will? In EXE-Files wird ein Header eingebunden. Ich möchte aber, dass wirklich nur der Maschinencode in der Datei steht, der notfalls auch ohne Betriebssystem (also direkt vom Bootsektor aus) lauffähig ist.

    Habe das schon einmal mit dem GNU-Compiler (cc) für Linux hinbekommen, aber ich würde das gerne in Windows machen. Beim Turbo C-Compiler habe ich keine Optionen dafür gefunden, und beim Microsoft-Compiler schon gar nicht.

    Danke!

    mfg



  • Dieser Thread wurde von Moderator/in AJ aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Andere Compiler verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Warum nimmst du nicht einfach den GCC? Den gibt es für Windows als MinGW und für 32Bit-DOS als DJGPP



  • Guten Tag,

    es tut mir Leid, dass sowohl DJGPP als auch MinGW keine .com-Dateien mit 16-Bit-Befehlen (Bootsektoren laufen im 16-bit Real Mode!) erstellen kann, bloß solche für den 32-bit protected mode (mit Hilfe der beigelegten Tools objcopy und/oder objdump), so dass du einen Bootsektor mit Umschaltcode schreiben oder GNU GRUB (http://www.gnu.org/software/grub/) verwenden (und die Multiboot-Spezifikation (ca. 12,6 mal das Antwortfenster) lesen und umsetzen) müsstest. Oder du verwendest den OpenWatcom-C-Compiler (16-bit target). Aber auch mit Turbo C / Borland C++ 5.0 ist es möglich, dazu nur Objectfiles erstellen (ggf. auf der Kommandozeile), diese dann mit JLoc (Rezension, Homepage) behandeln (nicht ganz einfach!) oder mit tlink zu einer EXE-Datei linken und diese in eine COM-Datei (z.B. mit exeflat, in den FreeDOS-Quellen Makefile, Quelltext, though you will need some Makefiles from this directory (CVS listing, select generic.mak, then click on one of the download links (preferably the first (in the page, latest in time) one without the UNSTABLE tag), then the same for the makefile for your compiler.

    Entschuldigung, dass ein Teil in Englisch ist ;), du verstehst hoffentlich Englisch (die Webseiten sind alle in Englisch, deshalb das Englisch *scnr* hier drin ;)). Passe auch auf, dass du nicht mit Startup-Files linkst, die Betriebssystem-(z.B. DOS-)Funktionen aufrufen! ⚠ Hoffentlich kann ich dir hiermit helfen.

    Mit freundlichen Grüßen

    FreeDOS-Freak



  • Der Bootsector auf Intel PC darf maximal 512 Bytes groß sein. Ich wünsch dir viel Spaß, wenn du das mit C/C++ hinbekommen willst. Meine Empfehlung nimm den GCC und benutzte GRUB. Grub aktiviert auch den protected mode für dich, also 32Bit.



  • Christoph R. schrieb:

    Welchem C-Compiler für Windows könnt ihr mir empfehlen, wenn ich COM-Dateien erstellen will?

    Mit OpenWatcom geht das. Du musst den Compiler so aufrufen:

    wcl test.c -l=COM -fe=test.com
    

    PS: Wenn OpenWatcom und Microsoft C++ gleichzeitig installiert sind, kann es zu Problemen kommen.


Anmelden zum Antworten