• Keine Ergebnisse gefunden

Grundlagen der Rechnerarchitektur

N/A
N/A
Protected

Academic year: 2022

Aktie "Grundlagen der Rechnerarchitektur"

Copied!
16
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Grundlagen der Rechnerarchitektur

MIPS‐Assembler

(2)

Übersicht

• Arithmetik, Register und Speicherzugriff

• Darstellung von Instruktionen

• Logische Operationen

• Weitere Arithmetik

• Branches und Jumps

• Prozeduren

• 32‐Bit‐Konstanten und Adressierung

• Synchronisation

• Exceptions

• Pseudoinstruktionen, Direktiven und Makros

(3)

Motivation

Grundlagen der Rechnerarchitektur ‐Assembler 3

(4)

Warum ein Assembler‐Kurs?

• Wir wollen etwas über Rechnerarchitektur lernen. 

Assembler ist ein Teil davon.

• Nach dem Erlernen von Assembler eines Systems,  lernt man Assembler anderer Rechner kinderleicht

• Während wir uns mit Assembler beschäftigen 

lernen wir auch generelle Konzepte kennen, wie 

die Hardware in Computern und eingebetteten 

Systemen organisiert ist

(5)

Vor‐ und Nachteile von Assembler

• Wann sollte man Assembler programmieren?

– Code‐Größe oder Geschwindigkeit sollen bis auf das äußerste  ausgereizt werden

– Verwendung  spezieller Maschineninstruktionen, die ein Compiler  nicht nutzt  (in der Regel bei CISC) 

– Es gibt für die Computer‐Hardware keine höhere Sprache

• Meist wird ein hybrider Ansatz gewählt

– Man programmiert das meiste in einer High‐Level‐Sprache

– Nur kleine Teile des gesamten Codes werden direkt in Assembler  optimiert

• Nachteil von Assembler

– Programme laufen nur für den Hardwaretyp für den diese  programmiert sind

– Assembler‐Code ist im Vergleich zu High‐Level‐Sprachen deutlich  länger

• Programmieren dauert deutlich länger

• Programmieren ist fehleranfälliger (insbesondere wegen fehlender Struktur)

Grundlagen der Rechnerarchitektur ‐Assembler 5

(6)

Assembler am Beispiel der MIPS‐Architektur

• Frühere Einsatzgebiete MIPS

– Silicon Graphics Unix‐Workstations (z. B. SGI Indigo2)  – Silicon Graphics Unix‐Server (z. B. SGI Origin2000) 

– DEC Workstations (z.B. DECstation‐Familie und DECsystem) – Siemens bzw. SNI Server der RM‐Serie

– Control Data Corporation Computer des Typs CDC 4680 

• Heutiger Einsatz von MIPS in eingebetteten Systemen

– Cobalt‐Server bis RaQ/Qube2 – BMW‐Navigationssysteme

– die Fritz!Box

– Satellitenreceiver – Dreambox

– Konica Minolta DSLRs 

– Sony‐ und Nintendo‐Spielkonsolen

Quelle der Liste: de.wikipedia.org/wiki/MIPS‐Architektur

(7)

7

Warum 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

(8)

Begleitend: SPIM‐ und MARS‐Simulator

Programmieren lernt man nicht durch zuschauen!

Alle Konzepte sollte man hier selber ausprobieren!

(9)

Arithmetik, Register und Speicherzugriff

Grundlagen der Rechnerarchitektur ‐Assembler 9

(10)

Arithmetik und Zuweisungen

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

(11)

Die Operanden sind Register

Grundlagen der Rechnerarchitektur ‐Assembler 11

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, $s2 # t0=g+h add $t1, $s3, $s4 # t1=i+j sub $s0, $t0, $t1 # f=t0-t1

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.

(12)

Speicher‐Operanden

C Programm:

g = h + A[8];

Sei hierbei:

g in Register $s1 gespeichert h in Register $s2 gespeichert

Basisadresse von A in Register $s3

MIPS Instruktionen (verwende temporäres  Register $t0):

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(13)

Alignment‐Restriction

Grundlagen der Rechnerarchitektur ‐Assembler 13

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

(14)

Laden und Speichern

C Programm:

A[12] = h + A[8];

Sei hierbei:

Basisadresse von A in Register $s3  und h in Register $s2 gespeichert

MIPS Instruktionen (verwende temporäre  Register $t0):

(15)

Laden und Speichern von Bytes

Grundlagen der Rechnerarchitektur ‐Assembler 15

C Programm:

A[12] = h + A[8];

Sei hierbei:

Basisadresse von A in Register $s3 h in Register $s2 gespeichert

MIPS Instruktionen (verwende temporäre  Register $t0):

Sei A[8] = 01110010. Was passiert im obigen Beispiel bei lb mit $t0 genau?

LSB

$t0 MSB

Sei A[8] = 11110010. Was passiert im obigen Beispiel bei lb mit $t0 genau?

LSB

$t0 MSB

(16)

Weitere Befehle zum Laden und Speichern

Laden von Byte ohne Sign‐Extension:

lbu { Beispiel: lbu $t0, 27($s3) }

Was passiert im obigen Beispiel mit $t0, wenn 27($s3) = 11001000?

LSB

$t0 MSB

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) }

Referenzen

ÄHNLICHE DOKUMENTE

Register in dem der  Programm‐Counter  steht. Hier steht die  Adresse der nächsten  abzuarbeitenden  Instruktion..

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth

Grundlagen der Rechnerarchitektur ‐ Einführung 25 Bildquellen: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth

Mikroarchitektur (Register‐Transfer Ebene) Instruktionssatz‐Architektur.

[r]

SS 2012 Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur ‐

Bildquelle: Symbole kopiert aus David A. Patterson und John L. Hennessy, „Computer Organization and

[PattersonHennessy2012] David A. Patterson und  John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012. 2.4 Signed and Unsigned