frage zu assemblern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • frage zu assemblern

    moin moin^^
    mein Kumpel und ich haben mal just4fun eine wette gemacht, wer ein OS hinbekommt(nix großes, es sollte starten und herunterfahren)
    war deswegen jetzt 2 Tage lang im I-net, um mich über alles schlau zu machen.

    dabei hab ich mitbekommen, das man sowas nich mit C schreibt sondern mit Assemblern.
    da C/c++ ja windows sprachen sind, beziehungsweise die bibliotheken auf Windows basieren etc

    ich habe da meine kleine Frage:
    ich habe leider ncoh nich viel ahnung von assemblern, daher kann mir einer kurz & knapp erklären,
    woher ich so ein programm bekomme, bzw was es genauer ist

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von domis4 ()

  • RE: frage zu assemblern

    Das Thema schreit ja geradezu nach einem Kommentar meinerseits ^^ Ok, ich werde das in Teilstücken beantworten.

    domis4 schrieb:

    also,
    mein Kumpel und ich haben mal just4fun eine wette gemacht, wer ein OS hinbekommt(nix großes, es sollte starten und herunterfahren)
    war deswegen jetzt 2 Tage lang im I-net, um mich über alles schlau zu machen.


    Selbst das ist eine große Aufgabe, außer man macht Copy & Paste aus Tutorials, was aber nicht der Sinn der Sache wäre.

    domis4 schrieb:

    dabei hab ich mitbekommen, das man sowas nich mit C schreibt sondern mit Assemblern.
    da C/c++ ja windows sprachen sind, beziehungsweise die bibliotheken auf Windows basieren etc


    Wrong! Man schreibt sowas mit C/C++. Man braucht nur einen ganz ganz geringen Anteil (So ca 100 Zeilen) Assembler zum booten und ab da kann man mit C/C++ weitermachen. An sich geht das mit sehr vielen Sprachen. Und als Randnotiz: C und C++ sind keine Windowsspezifischen Sprachen. Wenn man in C/C++ ein OS schreibt, dann muss man kleinere Teile der Bibliotheken neu schreiben die an das eigene OS angepasst sind (z.B. Memory Allocation und ähnliches).
    Man kann ein OS natürlich auch nur in Assembler schreiben. Man lernt dadurch viel über den Rechner und den Aufbau, aber es ist seeehr Fehleranfällig und man sollte definitiv wissen was man da tut, ist also für den Einstieg nicht zu empfehlen.

    domis4 schrieb:

    ich habe da meine kleine Frage:
    ich habe leider ncoh nich viel ahnung von assemblern, daher kann mir einer kurz & knapp erklären,
    woher ich so ein programm bekomme, bzw was es genauer ist


    Also, falls du das wirklich willst, dann such nach "NASM", das ist der am häufigsten genutzte Assembler für OS Entwicklung. Für weitere Informationen rate ich dir mal auf osdev.org vorbeizuschauen, da erhälst du weitere Informationen und ein sehr gut gefülltes Wiki.

    Zu deiner Frage was ein Assembler ist: Assembler ist die "direkte" Sprache der CPU. Anweisungen wie etwa "x = y + 2" sehen in Assembler so aus (sehr grob gefasst):

    Quellcode

    1. lea ebx, y
    2. mov eax, [ebx]
    3. add eax, 2
    4. lea ebx, x
    5. mov [ebx], eax


    Fazit: Im groben rate ich dir dich erstmal mit C/C++ vertraut zu machen, dann später, sobald du es kannst, dich näher mit Assembler zu beschäftigen. Und erst dann(!) mal in ein OS zu gucken. Ein OS zu schreiben, und sei es nur zum booten und runterfahren, ist alles andere als einfach (wenn man wissen will was man da macht), und erfordert sehr viel Einarbeitungszeit, wie beispielsweise das Lesen der Intel x86 Dokumentation (komplett), und diverser Bücher über OS Theorie.

    Also erstmal in die Grundlagen einarbeiten, und dann anfangen!

  • Ich rede hier nicht von Grundkenntnissen, sondern von "richtigen" Kenntnissen von C/C++. Du musst wissen was intern bei Aufrufen wie "Foo foo = new Foo();" passiert, damit du weißt wie ein OS sowas intern löst.
    Falls du doch direkt mit NASM in die Bresche springen willst, will ich dich nicht aufhalten: de.wikibooks.org/wiki/Assemble…Prozessor)-Programmierung, aber sei gewarnt: ganz so einfach wird es nicht.