Eignet sich der Gnu Assembler für die Betriebssystemprogrammierung?



  • aaaaaaaaaaaaaaaaaaaaaaaab schrieb:

    1. Es gibt keinen "Assembler Standard". Warum glaubst du sonst, dass alle Assembler ihr eigenes Süppchen kochen, und eigene Direktiven und Syntaxabweichungen einbauen?

    Standard != Norm

    3. Ich finde die Wahl nicht logisch. "Gnu System" ist schließlich nicht Unix.

    ReactOS soll ein freier Ersatz für Windows werden.

    Intelligenzfrage an dich:
    Macht es nun Sinn, für ReactOS als Kommandozeilenshell die Bash zu verwenden oder zur command.com Shell kompatibel zu bleiben?

    4. Eben. Wenn die AT&T-Syntax "Standard" auf Unix war, muss man das ja nicht auf Linux übertragen, weil "Linux ist nicht Unix".

    Nur weil GNU den Linux Kernel als Kernel einsetzt bedeutet das nicht, dass sich durch den Einsatz des Linux Kernels etwas an der ursprünglichen Ausrichtung des GNU Systems ändert.

    Du scheinst zu glauben, dass die Syntax einer Programmiersprache (in diesem Fall eine Assemblersprache) fest mit einem Betriebssystem verknüpft ist.

    Nö, aber ich bin Intelligent genug zu erkennen, dass ich zur bestehenden Syntax des Vorbildsystems kompatibel bleiben muss, wenn die Leute ihren Quellcode auf meinem System mit meinem Assembler weiterhin in Masschinencode umwandeln können sollen.

    Wenn ich nämlich einen Ersatz für ein OS schreiben würde, dann wäre meine Aufgabe nicht auch noch eine neue Programmiersprache zu erfinden.



  • Verbreitung schrieb:

    Nö, aber ich bin Intelligent genug zu erkennen, dass ich zur bestehenden Syntax des Vorbildsystems kompatibel bleiben muss, wenn die Leute ihren Quellcode auf meinem System mit meinem Assembler weiterhin in Masschinencode umwandeln können sollen.

    Wenn ich nämlich einen Ersatz für ein OS schreiben würde, dann wäre meine Aufgabe nicht auch noch eine neue Programmiersprache zu erfinden.

    Es gibt Assembler, die unterstützen beide Syntaxen, sowohl die Intel-NASM-Syntax als auch die At&T-Gnu Assembler-Syntax, nämlich YASM.

    Man könnte den Gnu Assembler durch diesen ersetzen. Dadurch wäre gewährleistet, dass sich auch noch ältere Projekte kompilieren lassen, neuere Projekte könnte aber ihren Quellcode nun in der Intel-Syntax schreiben.



  • Um nochmal auf die Ausgangsfrage zurückzukommen, warum so viele Projekte gas benutzen und nicht nasm:

    Du erwähnst als Beispiel nur GRUB , und dieses Projekt startete im Jahr 1995 (Quelle: http://www.gnu.org/software/grub/manual/html_node/History.html). nasm hingegen wurde erst im Jahr 1996 veröffentlicht. gas war damals schon einige Jahre alt (Laut den Copyright-Vermerken für die Anleitung zu gas auf http://tigcc.ticalc.org/doc/gnuasm.html#history gehe ich von 1988 aus). Vermutlich hat der GRUB -Entwickler damals einfach den Assembler verwendet, der ihm zur Verfügung stand, und später sah man keinen Grund, nochmal zu wechseln.

    Ganz allgemein darf man nicht vergessen, dass das Internet in den Neunzigern noch nicht so verbreitet war wie heute. Viele hatten überhaupt keinen Zugang, und die Bandbreite war oftmals noch so beschränkt, dass man nicht mal eben so irgendeine Software herunterladen konnte. In vielen Fällen wird man das benutzt haben, was man schon auf irgendwelchen Datenträgern da gehabt hat.



  • Ok, diese Begründung scheint mir auf jeden Fall einleuchtend.

    Aber dem Gnu Assembler fehlen halt meiner Meinung nach wichtige Direktiven und Funktionen, wie z. B.:
    1. ein Schalter, mit dem es möglich ist, pure Binary-Dateien auszugeben. In NASM: -f bin
    2. NASM unterstützt die times Direktive, mit der es möglich ist, zur Assemblerlaufzeit ein Programm auf eine bestimmte Größe aufzufüllen. Wenn man beispielsweise einen Bootloader entwickelt, dann muss man immer bis auf 510 bytes auffüllen (byte 511 und byte 512 müssen ja bekanntlich einen bestimmten Wert haben, damit das BIOS den Bootloader als Bootloader erkennt). So eine Direktive konnte ich auch nach längerer Suche nicht finden.
    3. zu viele unnötige Sonderzeichen, die das Programmieren verlangsamen
    usw.

    Stattdessen hat der Gnu Assembler unnötige Direktiven, wie beispielsweise .file , mit der kann den Dateinamen der Quelldatei angeben. Wo der Assembler das braucht, bzw. überhaupt verarbeitet, ist mir schleierhaft. Überaus unnötig! Solche Funktionen blähen ein Programm (und den Assembler auch - denn .file muss ja irgendwo geparst werden)nur auf.



  • Also ich hab mich jetzt mit deinen Kritikpunkten nicht genau beschäftigt, aber mir scheint, dass eben derlei Kritik zur Entwicklung von NASM geführt hat, siehe http://www.nasm.us/xdoc/2.11/html/nasmdoc1.html#section-1.1.1:

    "The Netwide Assembler grew out of an idea on comp.lang.asm.x86 (or possibly alt.lang.asm - I forget which), which was essentially that there didn't seem to be a good free x86-series assembler around, and that maybe someone ought to write one. [...] gas is free, and ports over to DOS and Unix, but it's not very good, since it's designed to be a back end to gcc , which always feeds it correct code. So its error checking is minimal. Also, its syntax is horrible, from the point of view of anyone trying to actually write anything in it. Plus you can't write 16-bit code in it (properly.)"

    gas war demnach nur als Backend für gcc zur Codegenerierung gedacht - nicht zum Programmieren.



  • @all

    Ke’i!
    Ya wan, ya darn !

    @aaaaaaaaaaaaaaaaaaaaaaaab

    Joa qua?

    @Jaffa

    Jaffa Kre!



  • Ich habe mich übrigens nur Jaffa genannt, weil mein Neffe so gerne die Jaffa-Kekse isst...

    http://www.aldi-nord.de/aldi_jaffa_cake_629_467_1094_15819.html



  • Interessant, leider ist mein klingonisch so schlecht.

    Konnte im Internet keine Übersetzung zu "Joa qua?" finden.



  • aaaaaaaaaaaaaaaaaaaaaaaab schrieb:

    Interessant, leider ist mein klingonisch so schlecht.

    Dann bleib besser bei deiner Fußball Bundesliga, das kennst du wenigstens.


  • Mod

    aaaaaaaaaaaaaaaaaaaaaaaab schrieb:

    Interessant, leider ist mein klingonisch so schlecht.

    Das ist ja auch kein klingonisch.

    Goa´Uld schrieb:

    @all

    Ke’i!
    Ya wan, ya darn !

    @aaaaaaaaaaaaaaaaaaaaaaaab

    Joa qua?

    @Jaffa

    Jaffa Kre!

    @all

    Kniet!

    Kniet vor eurem Meister!

    @aaaaaaaaaaaaaaaaaaaaaaaab

    verstehen? [Da bin ich mir nicht so sicher, da es keinen Sinn ergibt]

    @Jaffa:

    Joho!

    Ich buche dann mal 10 Nerdpunkte auf mein Konto 🙂



  • SeppJ schrieb:

    Das ist ja auch kein klingonisch.

    Was dann?



  • Goa'uld-isch (Stargate)


Anmelden zum Antworten