Visual Studio - Wie Pure-Binarys (also kein PE-Format) erzeugen?
-
OS-Development. Dafür wird zwar in der Regel der GCC verwendet, aber 1. komm ich nich mit der Inline-ASM-Syntax zurecht und 2. arbeite ich lieber mit einem Compiler den ich in- und auswendig kenn (es hat mich z.B. 2 Wochen gebraucht herauszunfinden, dass der GCC meine Struktur für die IDT "optimiert", also auf ein bestimmtes Alingment gebracht hat, was dem Prozessor natürlich nicht gefiel).
-
Jonas OSDever schrieb:
OS-Development. Dafür wird zwar in der Regel der GCC verwendet, aber 1. komm ich nich mit der Inline-ASM-Syntax zurecht und 2. arbeite ich lieber mit einem Compiler den ich in- und auswendig kenn (es hat mich z.B. 2 Wochen gebraucht herauszunfinden, dass der GCC meine Struktur für die IDT "optimiert", also auf ein bestimmtes Alingment gebracht hat, was dem Prozessor natürlich nicht gefiel).
Dafür gibts __attribute__((packed)) beim GCC. Das entsprechend #pragma push(pack) (?) sollte man aber beim MSVC auch nicht weglassen.
-
Ich hab das mit dem __attribute-Zeug später auch rausgefunden. Beim MSVC hätt ichs einfach in den Einstellungen gemacht oder aber mit #pragma. Trotzdem find ich VS besser zu bedienen. Den Link schau ich mal durch.
-
Mmh, diesen Wiki-Eintrag hab ich schonmal gelesen. Ist aber nicht ganz das was ich brauche. Hier wird ja nur gezeigt, wie man VS konfiguiern muss um die PE-Datei für GRUB verträglich zu machen (durch die reloc-Section), nicht aber wie pure binaries erzeugt werden. Das mit dem Watcom-Linker muss ich mal noch angucken.
-
Was genau ist denn deiner Meinung nach eine "pure Binary"
-
Kein PE-Header, keine markierten Sections. Eben der Maschinencode, den ein bestimmtes Programm erzeugen würde genau in einer Datei.
Also:int Var = 0; Var = 90;
wird zu
Var dd 0 mov Var, 90
Der Aufruf der main usw. wird dadurch geregelt, dass ein Bootloader die Adresse vom Linker bekommt und diese Aufruft.
-
MSVC kann keine rohen Binaries erzeugen, außer Du nimmst Zusatzsoftware zur Hilfe.
-
Und welche Zusatzsoftware könnte ich zur Hilfe nehmen? LD is wie gesagt ganz schick, kommt aber nicht mit den MS-Obj-Format zurecht.
-
Jonas OSDever schrieb:
Und welche Zusatzsoftware könnte ich zur Hilfe nehmen? LD is wie gesagt ganz schick, kommt aber nicht mit den MS-Obj-Format zurecht.
Ich glaube, das steht in dem Artikel.
-
Sorry, hab das mit Watcoms WLink überlesen. Ich werd mal OpenWatcom besuchen und das Ding (hoffentlich erfolgreich) ausprobieren.