Assembler

Dieses Thema im Forum "Programmieren" wurde erstellt von bufid, 14. Dezember 2003.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  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

  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

    Registriert seit:
    16. Juni 2002
    Beiträge:
    9.246
    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

    Registriert seit:
    16. Juni 2002
    Beiträge:
    9.246
    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

    Registriert seit:
    4. März 2002
    Beiträge:
    902
    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...
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen