TI2/Rechnerarchitektur-Tutorium, 05./06.05.2015
Organisatorisches
Zu den Übungszetteln
- Keine Einzelabgaben
- Auf den Zettel: Euer Name, Mein Name, Tag des Tutoriums
- Übungsblatt ist kein Chat: Groß-/Kleinschreibung, Rechtschreibung
- Quellenangaben
Nachbesprechung 1. Übungszettel
Vorbesprechung 3. Übungszettel
Assembler
Weitere bedingte Sprünge
- Bisher kennen wir:
je, jne, jz, jnz
- Wollen Vergleiche wie
a > b haben
- Unterscheidung zwischen Zahlen mit Vorzeichen und ohne Vorzeichen
- Mit Vorzeichen:
jg (if greater),
jge (greater or equal)
jl (less)
jle (less or equal)
- Ohne Vorzeichen:
ja (if above)
jae (above or equal)
jb (below)
jbe (below or equal)
Inhaltliches
Speicher
- Bisher: Wir arbeiten auf Registern
- Was ist, wenn Anzahl an Registern nicht ausreicht?
- (Zusätzliche) Nutzung des Hauptspeichers
- Wichtiger Speicherbereich: Stack
Benutzung des Stacks
push op1
- packt
op1 (Register, oder Zahl) oben auf den Stack
pop op1
- nimmt das oberste Element vom Stack und packt es in
op1
- diese beiden Register nicht überschreiben:
rsp und rbp
- sind für die Funktionalität des Stacks wichtig
Stack (cont’d)
- Wie funktionieren Funktionsaufrufe technisch?
- Rücksprungadressen
- Lokale Adressen
Speicherzugriff
- Eckige Klammern
[ Basisregister + Indexregister * Skalierung + Offset ]
Basisregister und Indexregister (optional) sind Register
Skalierung und Offset sind Konstanten (beide optional)
Skalierung ist ein Wert aus 1,2,4,8
- Für Adressierung werden speziell
RBX und RBP als Basis- und RDI und RSI als Indexregister benutzt.