1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Assembler

Discussion in 'Programmieren' started by bufid, Dec 14, 2003.

Thread Status:
Not open for further replies.
  1. bufid

    bufid Guest

    Ich wollte demnächst anfangen Assembler zu programmieren. Kann mir da jemand für den Anfang einige Tips geben was ich zu beachten hab oder vielleicht einige Bücher enpfehlen ......?

    Gruß
    bufid
     
  2. Kokomiko

    Kokomiko Guest

    Bingo.
     
  3. Kokomiko

    Kokomiko Guest

    Sorry, keine Ahnung. Ich habe mir damals ein paar Blätter mit dem Instruktions-Set der CPU besorgt und ein paar Leute gelöchert, die mehr Ahnung hatten. War am Anfang meines Studiums. Such doch mal bei Google nach "Assembler Tutorial" oder so ähnlich.
     
  4. Kokomiko

    Kokomiko Guest

    Schon klar. War kein Widerspruch, eher eine Ergänzung. :)
     
  5. franzkat

    franzkat CD-R 80

    Ich meine ja auch nicht die Geschwindigkeit, sondern die Größe.
     
  6. Kokomiko

    Kokomiko Guest

    Ich habe einen Haufen in Assembler gemacht. Angefangen habe ich mit dem 6502, dann habe ich ein bißchen was mit dem 6809 gemacht (Vorgänger der 68000er-Serie), dann 80x86.

    Assembler ist vor allem sinnvoll, wenn man auf leistungsschwacher Hardware mit begrenzten Ressourcen (Speicher) Hardware-nah arbeitet. Typische Anwendungen sind heutzutage Microcontroller-Programme (wobei es hierfür auch schon gute Hochsprachen-Compiler gibt).

    Spaß macht es vor allem, wenn man mit Assembler die zig-fache Geschwindigkeit compilierter Hochsprachen-Programme bei geringerer Programmgröße erreicht und damit evtl. sogar Sachen darstellbar macht, die sonst gar nicht gingen. Ich erinnere mich noch an meine Game-of-Life-Implementierung in 6502-Assembler - alle Generationen des R-Pentominos in unter 30 Sekunden inkl. grafischer Darstellung ... :rolleyes: :D
     
  7. Kokomiko

    Kokomiko Guest

    Da kommt es auch nicht auf die Code-Geschwindigkeit an - das meiste sind sowieso Betriebssystem-Aufrufe.
     
  8. franzkat

    franzkat CD-R 80

    Auch wer brauchbare Viren programmieren möchte, kommt um Assembler kaum herum, weil nur Assembler dir den Code so klein halten kann, dass der Virus nicht sofort entdeckt werden kann.
     
  9. Kokomiko

    Kokomiko Guest

    Dem gibt es nichts hinzu zu fügen. Ich habe das Assembler-Programmieren sein gelassen, nachdem mein Compiler schnelleren optimierten Code erzeugt hat als ich mit hand-assemblieren. :aua:

    Alleine aufgrund der komplizierten Struktur der Instruction Pipelines moderner Prozessoren mit Parallel Execution und Branch Prediction ist es sinnlos und fast unmöglich, manuell Ergebnisse hinzubekommen wie ein guter Optimizer, der von versierten Compiler-Backend-Bauern darauf getrimmt wurde, die monatelang nix anderes getan haben, als dafür Instruction Codes und Pipelines zu studieren.

    Ein simples Beispiel: Folgen zwei getrennt ausführbare Instruktionen aufeinander (z.B. Speicherzugriff und Addition), kann es sinnvoll sein, eine langsamere Adress-Operation auszuführen als das, was eigentlich möglich wäre, damit die Pipeline nicht stallt und damit z.B. Instruction Reordering und Branch Prediction unmöglich macht.

    Und wenn Du das verstanden hast, darfst Du Assembler programmieren. :p :D :totlach:
     
  10. sarkastic_one

    sarkastic_one Halbes Megabyte

    Ohne dir den Spass verderben zu wollen: Assembler programmieren ist außer kompliziert nur sinnlos.

    1) Wirst du auf modernen CPU's keine besonders gute Perfomance erreichen können, weil du die Code-Optimierung nicht hinbekommst (für Sprungvorhersage, parallele Berechnung, SSE,...)
    2) Erreichst du mit viel Code nur mickrige Ergebnisse
    3) Findet man Fehler nur sehr schwer

    Ich hatte das "Vergnügen" Microcontroller mit Assembler zu programmieren. Glaub' mir, das ist alles andere als lustig.

    Wenn du schon hardwarenahe coden willst verleg' dich auf C und bau ein paar Assembler-Module ein, wenn du mit den vorgegebenen Möglichkeiten nicht auskommst. Aber als Warnung: der Fehler steckt mit 90% Wahrscheinlichkeit im Assemblerteil...
     
Thread Status:
Not open for further replies.

Share This Page