Autor Thema: Dateiformate  (Gelesen 8046 mal)

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« am: 24. January 2011, 23:35 »
Hi zusammen,

ich bin gerade dabei mir ein eigenes Dateiformat zu überlegen, dass dann mein Kernel unterstützen soll.
Welches Dateiformat würdet ihr als Ausgangssituation empfehlen?
Damit meine ich, dass der Code fertig gelinkt sein soll. Das Format braucht Informationen über alle vorhandenen Sektionen, damit ich die Datei entsprechend konvertieren kann.
Ich könnte natürlich das Elf-Format übersetzen, aber gibt es da noch einfachere, mit ensprechenden Informationen?

Gruß,
rizor
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #1 am: 25. January 2011, 00:19 »
Du willst also ein Dateiformat zu deinem Format umwandeln? Wozu?

Und wieso das Rad dreimal neu erfinden? ELF oder PE nehmen und gut ist (wem das zu einfach klingt oder mehr Formate kennt, die für OS-Dev sinnvoll sind, darf meine Aussage gerne erweitern).
$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

AGGROStar1991

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 25. January 2011, 07:13 »
was mir spontan( ausser .bin *gg*) och einfallen würde wäre a.out... aber ob das so sinnvoll ist wie PE oder ELF wage ich doch mal zu bezweifeln ;)

warum kein vorhandenes format nehmen?

mfg

MasterLee

  • Beiträge: 49
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 25. January 2011, 07:40 »
Schau mal hier:
http://en.wikipedia.org/wiki/Comparison_of_executable_file_formats
Einfach zu laden sollte COM sein aber das ist sehr eingeschränkt.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 25. January 2011, 09:45 »
Ich möchte mich einfach auch mal auf dem Gebiet versuchen und mir was eigenes ausdenken und schauen, wie weit ich damit komme.

Danke für den link, der hat geholfen
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 25. January 2011, 11:56 »
Hallo,


ich bin gerade dabei mir ein eigenes Dateiformat zu überlegen, dass dann mein Kernel unterstützen soll.
Ich interpretiere das mal so das Du einen Loader hast (außerhalb vom Kernel) der die Programme die als ELF vorliegen mit den benötigten Librarys (auch ELF) zusammenlinkt und daraus ein möglichst simples Format generiert um das dem Kernel zu geben (der daraus einen neuen Prozess erstellt). Ich vermute mal Dein Ziel ist es im Kernel nur einen möglichst simplen Loader zu haben der z.B. keine externen Abhängigkeiten mehr auflösen können soll.
Das ist eine gute Idee aber ich würde trotzdem zu ELF raten. Dein Kernel muss ja nicht den vollen Funktionsumfang von ELF unterstützen, z.B. keine Relokations, und könnte zu komplexe ELF-Dateien einfach ablehnen. Der Vorteil ist das Du ein gebräuchliches Format hast das mit üblichen (bekannt funktionsfähigen) Tools analysierbar ist. Wenn Du Dich bei ELF auf das absolut notwendigste beschränkst sollte der Loader im Kernel auch ziemlich simpel ausfallen.

Wenn meine Vermutung daneben liegt dann ignoriere einfach mein geschreibsel.

Ich könnte natürlich das Elf-Format übersetzen, aber gibt es da noch einfachere, mit ensprechenden Informationen?
Wenn ein Format einen entsprechenden Funktionsumfang bieten soll dann wird es auch immer zwangsläufig die zugehörige Komplexität erreichen.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 25. January 2011, 12:51 »
Hallo,


ich bin gerade dabei mir ein eigenes Dateiformat zu überlegen, dass dann mein Kernel unterstützen soll.
Ich interpretiere das mal so das Du einen Loader hast (außerhalb vom Kernel) der die Programme die als ELF vorliegen mit den benötigten Librarys (auch ELF) zusammenlinkt und daraus ein möglichst simples Format generiert um das dem Kernel zu geben (der daraus einen neuen Prozess erstellt). Ich vermute mal Dein Ziel ist es im Kernel nur einen möglichst simplen Loader zu haben der z.B. keine externen Abhängigkeiten mehr auflösen können soll.
Das ist eine gute Idee aber ich würde trotzdem zu ELF raten. Dein Kernel muss ja nicht den vollen Funktionsumfang von ELF unterstützen, z.B. keine Relokations, und könnte zu komplexe ELF-Dateien einfach ablehnen. Der Vorteil ist das Du ein gebräuchliches Format hast das mit üblichen (bekannt funktionsfähigen) Tools analysierbar ist. Wenn Du Dich bei ELF auf das absolut notwendigste beschränkst sollte der Loader im Kernel auch ziemlich simpel ausfallen.

Wenn meine Vermutung daneben liegt dann ignoriere einfach mein geschreibsel.

Darauf sollte es später mal hinaus laufen, wenn es an sich gut funktioniert.
Dadurch ist mein Kernel dann halt in der Lage jedes erdnkliche Dateiformat zu unterstützen, solange ein entsprechended Übersetzer vorhanden ist.
Wieso sollte ich da ein einfaches ELF nehmen? Reicht es nicht, das ganze Ding einfach durch den Übersetzer zu jagen?

Es sollte mal so werden, dass es an sich alles schon im RAM liegt, der Kernel sich die entsprechenden physischen Seiten raus sucht und in den neuen Kontext mappt und der Übersetzer bekommt dann ein Ergebnis, ob alles geklappt hat.
Der Übersetzer muss sich dann selbst um die Entsorgung der unbenötigten Dinge kümmern.

Da reicht doch an sich einfach etwas, dass die ganzen benötigten Sektionen unterstützt, oder?
Ist ELF da nicht ein Overkill?
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

 

Einloggen