Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Blatt 0, Aufgabe 8
Hallo, ich hätte eine Frage zur Assembler Programmierung.
Wie ist es denn besser/schneller/richtig:
Variante 1:
mov a, eax
mov b, ebx
add ebx, eax
Also erst mal alles aus dem Speicher in Register schreiben und damit weiterarbeiten.
oder Variante 2:
mov a, eax
add b, eax
Variable mit der gearbeitet werden soll direkt aus dem Speicher laden.
Kommt drauf an, auf was fuer einem Prozessor das genau laufen soll. Eine moderne, dicke Intel-CPU wird vermutlich fuer beides sehr aehnlichen bis denselben Microcode erzeugen. Nr. 2 macht ein Register weniger platt, das ist entweder gut oder schlecht, je nachdem ob und welchen Wert man noch braucht. Evtl. hat eine der beiden Varianten eine kuerzere Codierung in Opcodes, das kann einen kleinen Geschwindigkeitsvorteil bringen. Aber so generell wuerde ich sagen, dass es geschwindigkeitstechnisch wurscht ist, wenn man Wert drauf legt muss man fuer eine konkrete Situation nachmessen.
Aber so generell ist die Syntax evtl. falsch, den Registernamen nach ists ein Intel-Prozessor, mit Intel-Assembler-Syntax (also die ohne $ und Zeugs) ist aber die Argumentreihenfolge beim mov andersrum.
In der Aufabenstellung heißt es “(Pseudo-)Assembler-Programm” und dann wird folgendes Beispiel gegeben:
“Der Befehl add eax, ecx addiert bspw. den Inhalt von Register eax und ecx und speichert das Ergebnis in ecx. Alternativ können auch Konstanten als Quelloperand verwendet werden.”
Das hatte mich eh schon leicht verwirrt weil es eine Mischung aus Intel und AT&T Syntax ist
Danke für die Antwort, es steht zwar das hier in der Aufgabe: “Es stehen die Operationen mov, add, sub, mul zur Verfügung, die jeweils zwei Operanden erwarten, von denen jedoch nur maximal einer im Speicher liegen darf.” Aber mein Tafelübungstutor hatte alles erstmal grundsätzlich in Register geschrieben weswegen ich nochmal nachfragen wollte.
Nicht nur dich verwirrt das leicht^^ Deswegen meine Frage jetzt, welche der beiden sollen wir jetzt verwenden?! Oder einfach dieses gegebene Mischmasch…?
Da du eindeutig sehen kannst, welcher Stil genutzt wird (% vs. kein %), sollte das egal sein.
Abgabe?
Kann das sein, dass wir die Aufgabe gar nicht abgeben können? Im EST kann ich sie zumindest nicht hochladen.
So wie ich das verstanden habe, sollen wir pro Blatt eine PDF-Datei erstellen und diese abgeben.
Ich habe jetzt beide Aufgaben in einem PDF abgegeben.
Ah, okay. Das erklärt einiges. Danke!
Bei mir steht in der Bemerkung
Also c war ja das Ergebnis. Aber wie stellt man sowas überhaupt an beziehungsweise was ist damit genau gemeint?
So etwas wie mov “%RegisterMitErgebnis, c”.
Dass das Ergbnis in den Speicher zurückgeschrieben wird.
Sowas hatte ich glaube ich gemacht Oder auch nicht. Ich glaube ich habe erst jetzt verstanden was hjk meint.