




























































































Besser lernen dank der zahlreichen Ressourcen auf Docsity
Heimse Punkte ein, indem du anderen Studierenden hilfst oder erwirb Punkte mit einem Premium-Abo
Prüfungen vorbereiten
Besser lernen dank der zahlreichen Ressourcen auf Docsity
Download-Punkte bekommen.
Heimse Punkte ein, indem du anderen Studierenden hilfst oder erwirb Punkte mit einem Premium-Abo
Es gibt für die Computer-Hardware keine höhere Sprache. • Meist wird ein hybrider Ansatz ... Assembler-Code ist im Vergleich zu High-Level-Sprachen deutlich.
Art: Mitschriften
1 / 145
Diese Seite wird in der Vorschau nicht angezeigt
Lass dir nichts Wichtiges entgehen!





























































































-^ Arithmetik,
-^ Darstellung
-^ Logische
-^ Weitere
-^ Branches und
-^ Prozeduren •^32
-^ Synchronisation •^ Exceptions •^ Pseudoinstruktionen,
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
-^ Wir
-^ Nach
-^ Während
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
-^ Wann
-^ Code
-^ Verwendung
-^ Es^ gibt
-^ Meist
-^ Man
-^ Nur
-^ Nachteil
-^ Programme
-^ Assembler
-^ Programmieren
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
Warum 7
gerade
MIPS
(und
nicht
Intel
x86)?
-^ MIPS
‐Instruktionssatz
ist^ klar
und^ einfach
(RISC)
-^ Sehr
gut^ in
Lehrbüchern
beschrieben
-^ Sehr
ähnlich
zu^ vielen
modernen
Prozessoren
(z.B.^
ARM;
schauen
wir^ uns
eventuell
auch
noch
kurz^
an)
-^ MIPS
ist^ eine
kommerziell
relevante
Instruktionssatzarchitektur.
(z.B.^2002
wurden
fast^100
Millionen
MIPS
Prozessoren
hergestellt)
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
Programmieren
lernt^ man
nicht^ durch
zuschauen!
Alle^ Konzepte
sollte^
man^ hier
selber
ausprobieren!
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
C^ Programm:^ a^
=^ b^ +
c; d^ =^ a
-^ e;
MIPS^ Instruktionen:
Einfache
Arithmetik
mit^ Zuweisung C^ Programm:^ f^
=^ (g^
+^ h)^
-^ (i^
+^ j);
MIPS^ Instruktionen
(verwende
temporäre
Variablen
t0^ und
t1 ):
Komplexere
Arithmetik
mit^ Zuweisung
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
C^ Programm:^ f^
=^ (g^
+^ h)^
-^ (i^
+^ j);
Sei^ hierbei:g^ in
Register
$s1^ gespeichert h^ in^ Register
$s2^ gespeichert i^ in^ Register
$s3^ gespeichert j^ in^ Register
$s4^ gespeichert f^ in^ Register
$s0^ gespeichert
MIPS^ Instruktionen
(verwende
temporäre
Register
$t0^ und
$t1 ): add^ $t0,
$s1,
$s^
#^ t0=g+h
add^ $t1,
$s3,
$s^
#^ t1=i+j
sub^ $s0,
$t0,
$t^
#^ f=t0-t
Voriges
Beispiel:
Komplexere
Arithmetik
mit^ Zuweisung MIPS^ Registergröße
=^32 Bit
Assembler
‐Syntax: Das^ Zeichen
#^ leitet
für^ den
Rest^
der^ Zeile
einen
Kommentar
ein.
Der^ Text
wird^
vom^ Assembler
einfach
ignoriert.
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
Zugriff^ auf
A[8],^ wenn
Basisadresse
von^ A^ in
Register
$s3^ gespeichert?
Bildquelle:^
David^ A.^ Patterson
und^ John^ L.
Hennessy,
„Computer
Organization and Design“,
Fourth Edition,
2012
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
C^ Programm:^ A[12]
=^ h^
+^ A[8];
Sei^ hierbei:Basisadresse
von^ A^ in
Register
$s
und^ h^ in
Register
$s2^ gespeichert
MIPS^ Instruktionen
(verwende
temporäre
Register
$t0 ):
Weitere
Befehle
zum
Laden
und
Speichern
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
Laden^
von^ Byte
ohne^ Sign
‐Extension:
lbu^
{^ Beispiel:
lbu^
$t0,^
27($s3)
}
Was^ passiert
im^ obigen
Beispiel
mit^ $t0,
wenn^ 27($s3)
=^ 11001000?
LSB
$t0MSB Laden
von^ Halfword mit
Sign‐Extension:
lh^
{^ Beispiel:
lh^ $t0,
22($s3)
}
Laden^
von^ Halfword ohne
Sign‐Extension:
lhu^
{^ Beispiel:
lhu^
$t0,^
22($s3)
}
Speichern
von^ Halfword: sh {^
Beispiel:
sh^ $t0,
22($s3)
}
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
C^ Programm:^ x^
=^ x^ +
4; Sei^ hierbei:x^ in
Register
$s3^ gespeichert
MIPS^ Instruktion:
MIPS^ erlaubt
negative
Konstanten
und^ braucht
damit^ kein
‚subi‘.
MIPS^ hat
ein^ spezielles
Register
$zero,^
welches
0 ‘hart
verdrahtet‘
speichert.
C^ Programm:^ x^
=^ 42; Sei^ hierbei:x^ in
Register
$s3^ gespeichert
MIPS^ Instruktion:
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
Instruktion
Bedeutung
add Arithmetik
rd,^ rs,^
rt^
Register
rd = Register
rs +^ Register
rt
addi^ rt, rs,
imm^
Register
rt =^ Register
rs +^ Konstante
imm
sub^ rd,
rs,^ rt^
Register
rd = Register
rs –Register
rt
lb^ rt, Laden address
Lade
Byte^ an
der^ Adresse
address in
Register
rt.
Das^ Byte
ist^ sign
‐extended.
lbu^ rt,^
address
Lade
Byte^ an
der^ Adresse
address in
Register
rt.
lh^ rt,^ address
Lade
Half‐Word
an^ der
Adresse
address in
Register
rt.
Das^ Half
‐Word^
ist^ sign
‐extended.
lhu^ rt,^
address
Lade
Half‐Word
an^ der
Adresse
address in
Register
rt.
lw^ rt,^ address
Lade
Word^
an^ der
Adresse
address in
Register
rt.
sb^ rt, Speichern
address
Speichere
unterstes
Byte^ des
Registers
rt an^ Adresse
address
sh^ rt,^ address
Speichere
unteres
Half‐Word
des^ Registers
rt an^ Adresse
address sw^ rt,^ address
Speichere
Inhalt^
des^ Registers
rt an^ Adresse
address.
Grundlagen
der^ Rechnerarchitektur
‐^ Assembler
addi $s0, $zero, 4
#
lw $s1, 0($s0)
#
lw $s2, 4($s0)
#
add $s1, $s1, $s
#
add $s1, $s1, $s
#
addi $s1, $s1, 1
#
sw $s1, 0($s0)
#
0
421 4
12 8
4
12
33
Adresse
Inhalt
(Word) Speicher
zu^ Beginn
128 4 0
Adresse
Inhalt
(Word)
Speicher
nach
Instruktionsdurchlauf