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.