MIPS-Assembler, Mitschriften von Rechnerarchitektur

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

2021/2022

Hochgeladen am 09.08.2022

brigitte_lavendel
brigitte_lavendel 🇩🇪

5

(3)

1 / 145

Toggle sidebar

Diese Seite wird in der Vorschau nicht angezeigt

Lass dir nichts Wichtiges entgehen!

bg1
GrundlagenderRechnerarchitektur
MIPSAssembler
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Unvollständige Textvorschau

Nur auf Docsity: Lade MIPS-Assembler und mehr Mitschriften als PDF für Rechnerarchitektur herunter!

Grundlagen

der

Rechnerarchitektur

MIPS

‐Assembler

Ü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

Grundlagen

der^ Rechnerarchitektur

‐^ Assembler

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

Grundlagen

der^ Rechnerarchitektur

‐^ Assembler

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

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

Begleitend:

SPIM

‐^ und

MARS

‐Simulator

Grundlagen

der^ Rechnerarchitektur

‐^ Assembler

Programmieren

lernt^ man

nicht^ durch

zuschauen!

Alle^ Konzepte

sollte^

man^ hier

selber

ausprobieren!

Arithmetik

und

Zuweisungen

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

Die

Operanden

sind

Register

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.

Alignment

‐Restriction

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

Laden

und

Speichern

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)

}

Addieren

und

Laden

von

Konstanten

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:

Zusammenfassung

der^

behandelten

Instruktionen

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.

Quiz

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