Hello, Guest the thread was called2.1k times and contains 16 replays

last post from worf at the

C-Kurs, Abend 5 - Verbesserungsvorschläge

  • Abend 5: Was macht der Compiler eigentlich?
    http://skoe.de/wiki/doku.php?id=ckurs:05-abend5


    Weil ja erfahrungsgemäß immer Bugs drin sind wieder die Fragen: Was ist falsch oder zu ungenau? Was kann man kürzer oder besser beschreiben?

  • Hallo,


    bin leider nicht mehr zum Probelesen gekommen, bevor Du den Abend schon veröffentlicht hattest. ...


    Schließe mich sauhund an: Keine inhaltlichen Einwände. Gut gelungen und hoffentlich Anfänger-verständlich.


    Beim main.s-Assembler-Listing ist die Einrückung irgendwie kaputt.


    Hoffentlich ist der Stoff nicht zu trocken, aber irgendwann muss man die Toolchain ja erklären. ...


    BTW: Die Präprozessor-Ausgabe geht, glaube ich, nach stdout, weil er parallel beginnt, eine Assembler-Datei zu erstellen, halt nur nach dem Präprozessor abbricht. Nach dem -E-Schritt sind eine main.s und eine hello.s da, die aber noch keinen Code enthalten. -o schaltet (wie üblich) diese Assembler-Dateien um. ...


    Grüße
    heptasean

  • Quote

    BTW: Die Präprozessor-Ausgabe geht, glaube ich, nach stdout, weil er parallel beginnt, eine Assembler-Datei zu erstellen, halt nur nach dem Präprozessor abbricht. Nach dem -E-Schritt sind eine main.s und eine hello.s da, die aber noch keinen Code enthalten. -o schaltet (wie üblich) diese Assembler-Dateien um. ...


    mmmh echt? das klingt so als sollte man das Uz mal mitteilen...glaub nicht das das so sein soll :)

  • Hallo Leute! :winke:
    Ich muß da mal etwas einwerfen und zwar, der cc65 ist der compiler wo man den sourcecocde compiliert! Soweit so gut, aber Ihr kommt immer wieder mit so
    Sachen wie standard c99 und c irgendwas da war Topspeed Modula 2 einfach, sorry aber ich würde gerne von Euch wissen was diese ganzen Sachen sollen. Schön langsam kenne ich mich wircklich nicht mehr aus!

  • Hallo Gerald,


    schön, wiedermal was von Dir zu hören.


    Also erstmal möchte ich Dir sagen, dass ich mit Absicht immer zwei Threads aufmache, damit das Guru-Gequatsche den C-lernenden nicht durcheinander bringen kann. Leider lässt es sich trotzdem nicht immer klar trennen. Wenn ich Dich richtig verstanden habe, geht es Dir um die verschiedensten Begriffe, die mit "C" anfangen :-)


    Ich versuch's mal kurz aufzulisten:


    • C heißt die Programmiersprache
    • Weil C schon recht alt ist und man immer wieder Fehler ausgemerzt und Verbesserungen eingebaut hat, gibt es vom Standard, in dem die Programmiersprache beschrieben ist, mehrere Versionen. Die haben z.B. folgende Namen: K&R, ANSI/ISO C89, C90, C99. Diese beschreiben also nur die feinen Unterschiede zwischen den verschiedenen "Dialekten". Könnte man gaaaaanz grob mit BASIC V2.0 in C64 und BASIC V7.0 im C128 vergleichen.
    • cc65 heißt das Compiler-Paket für 6502-basierende Maschinen. Das ist der konkrete Name dieses Produkts. Dieses Paket beinhaltet mehrere Werkzeuge, die z.B. cl65, cc65, ca65 etc. heißen. Den Unterschied zwischen diesen Werkzeugen durchleuchtet die aktuelle Lektion.


    Auf die verschiedenen Standards verweise ich im Kurs nur, wenn tatsächlich einmal ein Detail auftaucht, das unterschiedlich ist. Du brauchst Dir das nicht im Detail zu merken. Aber wenn etwas von einem Compiler gefressen wird und vom anderen nicht, weißt Du, wo Du nachblättern kannst.


    Beantwortet das Deine Fragen?

  • @all
    Ich habe am Cevi (C-64) in Basic, ASM programmiert
    Am 'Amiga und PC (in div. Basic Dialekten) und dann weiter am PC in Pascal, Cobol, RPG, Topspeed Mudula 2 und ein bißchen in Clipper programmiert


    Habe dann durch das Forum wieder freude am ASM proggen gefunden, nur 'C" ist so ne sache die mir einfach nicht in meine Brine (Kopf) will

  • skoe
    Hallo meiin Freund!


    Leider nur teilweise, aber wie gesagt ich bin zur Zeit leider durch die Verkühlung etwas gehandicapt, deshalb werde mich mir mal den Lession five durchlesen und du kannst auch mit mir über ICQ sprechen ich bin zurzeit online


    by the way möchte ich dir noch sagen mach weiter so, nur bring vielleicht noch ein bisschen Grundwissen mit hinein nur so ein Vorschalg von mir

  • Von mener Seite her: sourcecode > cc65 = lauffähliges Prg

    Genau, damit das so funktioniert, gibt es das Programm cl65, das die ganzen anderen aufruft, und die Details vor Dir versteckt.


    und jetzt das Problem, für was brauche ich die ganzen anderen Sachen ????

    Erst einmal brauchst Du sie nicht unbedingt. Sie werden in dieser Lektion behandelt, um zu zeigen, welche Zwischenschritte intern passieren, um vom Source-Code zu einem ausführbaren Programm zu kommen.


    Diese Zwischenschritte können Dir z.B. helfen zu verstehen, warum und wann etwas schiefgeht. Du kannst Dir auch den Assembler-Zwischenschritt anschauen, also gucken, welcher Assembler-Code aus Deinem C-Code generiert wird.


    Außerdem helfen sie, Arbeit zu sparen, wenn Du ein großes Projekt hast und daran nur eine kleine Änderung machst: Es müssen dann nur die geänderten Dateien neu kompiliert und assembliert werden, und dann das ganze neu gelinkt.


    Völlig nutzlos ist das Wissen übrigens auch nicht, weil das bei großen C-Projekten unter Linux und Windows sehr ähnlich läuft: Die einzelnen Schritte sind voneinander getrennt, um doppelten Aufwand zu verhindern und Fehler genau lokalisieren zu können.