================== 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. :navigate: up -> doc:index back -> doc:session02/page01 next -> doc:session02/page03