Aufgaben zu Macros
Kleine Helfer
-
Es ist mühsam bei Vergleichen subq $0, %5, %0 zu tippen. Das soll mit cmp $0, %5 zu erreichen sein.
-
Mit inc %5 und dec %5 soll das Register 5 jeweils um Eins inkrementiert bzw. dekrementiert werden.
Quad-Word laden und speichern
Ist n ein Daten-Label, dann soll
-
mit ld n, %5 das Register 5 mit dem Quad-Word bei der absoluten Adresse
n überschrieben werden, und
-
mit st %5, n soll der Inhalt von Register 5 an die Adresse n geschrieben werden.
Fakultät
Die Fakultät soll
-
mit einer While-Loop und
-
einer For-Loop
implementiert werden
Vektor-Summe
Im Speicher seien die Werte 1, 2, 3 direkt nacheinander abgelegt. Die 1 soll mit der Summe dieser Zahlen überschrieben werden.
Stack
Das Register 3 soll als Stack-Pointer verwednet werden (RSP). Beim Start des Programmes soll RSP zum Beispiel auf 0x40 gesetzt werden.
Implementiert die Macros pushq und pop:
-
Mit pushq %7 der Inhalt von Register 7 auf den Stack gelegt.
-
Mit popq %6 wird vom Stack ein Wert in das Register 6 geladen.
Natürlich solltet ihr euch einen kleinen Test für die Macros ausdenken.