Assembler am Beispiel der MIPS Architektur

Ähnliche Dokumente
Beispiel: A[300] = h + A[300]

Datenpfad einer einfachen MIPS CPU

Grundlagen der Rechnerarchitektur

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU

Grundlagen der Rechnerarchitektur. Einführung

Mikroprozessortechnik. 03. April 2012

Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion)

Grundlagen der Rechnerarchitektur

28. März Name:. Vorname. Matr.-Nr:. Studiengang

Darstellung von negativen binären Zahlen

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 8 und Präsenzaufgaben Übung 9

Weitere Arithmetik. Grundlagen der Rechnerarchitektur Assembler 33

Technische Informatik 1

5.BMaschinensprache und Assembler

Assembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache

N Bit binäre Zahlen (signed)

Grundlagen der Rechnerarchitektur

Was ist die Performance Ratio?

Grundlagen der Rechnerarchitektur. Einführung

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM. Die MARS Umgebung

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

RO-Tutorien 15 und 16

Grundlagen der Rechnerarchitektur

Beispiele von Branch Delay Slot Schedules

Pipelining. Die Pipelining Idee. Grundlagen der Rechnerarchitektur Prozessor 45

Wie groß ist die Page Table?

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Instruktionssatz-Architektur

Quiz. Gegeben sei ein 16KB Cache mit 32 Byte Blockgröße. Wie verteilen sich die Bits einer 32 Bit Adresse auf: Tag Index Byte Offset.


Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18.

21. Februar Name:. Vorname. Matr.-Nr:. Studiengang

Cache Blöcke und Offsets

Synchronisation. Grundlagen der Rechnerarchitektur Assembler 91

2. Teilklausur Informatik II

Die Maschinenprogrammebene eines Rechners Jörg Roth 294

Direktiven. Direktiven vereinfachen das Datenlayout eines Programms im Speicher einfacher festlegen zu können.

Einführung in die Systemprogrammierung

RISC-Prozessoren (1)

Grundlagen der Rechnerarchitektur. Binäre Logik und Arithmetik

Digitaltechnik und Rechnerstrukturen. 2. Entwurf eines einfachen Prozessors

Die Mikroprogrammebene eines Rechners

Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Grundlagen der Rechnerarchitektur

DLX Befehlsübersicht

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

N Bit binäre Zahlen (signed)

Übungsblatt 10 (Block C 2) (16 Punkte)

Assembler - Adressierungsarten

Lösungsvorschlag 10. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Gleitkommaarithmetik. Erhöhen der Genauigkeit. Grundlagen der Rechnerarchitektur Logik und Arithmetik 124

Data Hazards. Grundlagen der Rechnerarchitektur Prozessor 74

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

L3. Datenmanipulation

Stephan Brumme, SST, 2.FS, Matrikelnr

Computer-Architektur Ein Überblick

Informatik II SS Assembler Programmierung Motivation. Assembler vs. Maschinensprache. Assembler Allgemein Befehle (Maschinensprache)

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Weitere Exceptions während des Handlings?

Technische Informatik - Eine Einführung

Grundlagen der Rechnerarchitektur. Ein und Ausgabe

Heute nur MIPS-Praxis (4 Aufgaben)

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Musterlösungen Technische Informatik 2 (T2) Prof. Dr.-Ing. D. P. F. Möller

"Organisation und Technologie von Rechensystemen 4"

Rechnergrundlagen SS Vorlesung

Technische Informatik 1 - HS 2017

Logische Bausteine. Grundlagen der Rechnerarchitektur Logik und Arithmetik 31

Der Toy Rechner Ein einfacher Mikrorechner

Logische Bausteine. Addierwerke. Grundlagen der Rechnerarchitektur Logik und Arithmetik 48

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at

H E F B G D. C. DLX Rechnerkern

Praktische Übungen zu Computertechnik 2. Versuchsprotokoll

Mikroprozessor als universeller digitaler Baustein

Lösungsvorschlag zur 3. Übung

Von-Neumann-Architektur

Aufgabe 1) Die folgenden Umwandlungen/Berechnungen beziehen sich auf das 32-Bit Single-Precision Format nach IEEE-754.

Grundbegriffe der Informatik

Programmiersprachen Einführung in C

Technische Informatik 1 Übung 2 Assembler (Computerübung) Matthias Meyer

Assembler Integer-Arithmetik

Rechnerstrukturen 1: Der Sehr Einfache Computer

Wichtige Rechnerarchitekturen

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

Vorlesung Rechnerarchitektur. Einführung

Rechnernetze und Organisation

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE

Steuerwerk einer CPU. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck

Teil 1: Prozessorstrukturen

Rechner- organisa-on 2 TOY. Karl C. Posch.

PC/XT/AT ASSEMBLER-BUCH

Technische Informatik 1

Technischen Informatik I, WS 2004/05

10. Die Adressierungsarten des MSP 430

Transkript:

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 Grundlagen der Rechnerarchitektur Assembler 6

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) 7 Grundlagen der Rechnerarchitektur Assembler

Begleitend: SPIM und MARS Simulator Programmieren lernt man nicht durch zuschauen! Alle Konzepte sollte man hier selber ausprobieren! Grundlagen der Rechnerarchitektur Assembler 8

Arithmetik, Register und Speicherzugriff Grundlagen der Rechnerarchitektur Assembler 9

Arithmetik und Zuweisungen Einfache Arithmetik mit Zuweisung C Programm: a = b + c; d = a e; MIPS Instruktionen: Komplexere Arithmetik mit Zuweisung C Programm: f = (g + h) (i + j); MIPS Instruktionen (verwende temporäre Variablen t0 und t1): Grundlagen der Rechnerarchitektur Assembler 10

Die Operanden sind Register Voriges Beispiel: Komplexere Arithmetik mit Zuweisung 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 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 11

Speicher Operanden C Programm: g = h + A[8]; MIPS Instruktionen (verwende temporäres Register $t0): Sei hierbei: g in Register $s1 gespeichert h in Register $s2 gespeichert Basisadresse von A in Register $s3 Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Assembler 12

Alignment Restriction 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 13

Laden und Speichern C Programm: A[12] = h + A[8]; MIPS Instruktionen (verwende temporäre Register $t0): Sei hierbei: Basisadresse von A in Register $s3 und h in Register $s2 gespeichert Grundlagen der Rechnerarchitektur Assembler 14

Laden und Speichern von Bytes C Programm: A[12] = h + A[8]; MIPS Instruktionen (verwende temporäre Register $t0): Sei hierbei: Basisadresse von A in Register $s3 h in Register $s2 gespeichert Sei A[8] = 01110010. Was passiert im obigen Beispiel bei lb mit $t0 genau? $t0 MSB LSB Sei A[8] = 11110010. Was passiert im obigen Beispiel bei lb mit $t0 genau? $t0 MSB LSB Grundlagen der Rechnerarchitektur Assembler 15

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? $t0 MSB LSB 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 16

Addieren und Laden von Konstanten C Programm: x = x + 4; MIPS Instruktion: Sei hierbei: x in Register $s3 gespeichert MIPS erlaubt negative Konstanten und braucht damit kein subi. MIPS hat ein spezielles Register $zero, welches 0 hart verdrahtet speichert. C Programm: x = 42; MIPS Instruktion: Sei hierbei: x in Register $s3 gespeichert Grundlagen der Rechnerarchitektur Assembler 17

Zwischenbilanz der MIPS Architektur Memory CPU Arithmetic Unit Registers $0... $31 Name Nummer Verwendung $zero 0 Konstante 0 $at 1 $v0 $v1 2 3 $a0 $a3 4 7 $t0 $t7 8 15 Temporäre Register $s0 $s7 16 23 saved temporäre Reg. $t8 $t9 24 25 Temporäre Register $k0 $k1 26 27 $gp 28 $sp 29 $fp 30 $ra 31 Grundlagen der Rechnerarchitektur Assembler 18

Arithmetik Laden Speichern Zusammenfassung der behandelten Instruktionen Instruktion add rd, rs, rt addi rt, rs, imm sub rd, rs, rt lb rt, address lbu rt, address lh rt, address lhu rt, address lw rt, address sb rt, address sh rt, address sw rt, address Bedeutung Register rd = Register rs + Register rt Register rt = Register rs + Konstante imm Register rd = Register rs Register rt Lade Byte an der Adresse address in Register rt. Das Byte ist sign extended. Lade Byte an der Adresse address in Register rt. Lade Half Word an der Adresse address in Register rt. Das Half Word ist sign extended. Lade Half Word an der Adresse address in Register rt. Lade Word an der Adresse address in Register rt. Speichere unterstes Byte des Registers rt an Adresse address Speichere unteres Half Word des Registers rt an Adresse address Speichere Inhalt des Registers rt an Adresse address. Grundlagen der Rechnerarchitektur Assembler 19

Quiz addi $s0, $zero, 4 # lw $s1, 0($s0) # lw $s2, 4($s0) # add $s1, $s1, $s1 # add $s1, $s1, $s2 # addi $s1, $s1, 1 # sw $s1, 0($s0) # Inhalt (Word) Inhalt (Word) Adresse 12 33 8 4 4 12 0 421 Speicher zu Beginn Adresse 12 8 4 0 Speicher nach Instruktionsdurchlauf Grundlagen der Rechnerarchitektur Assembler 20

Darstellung von Instruktionen Grundlagen der Rechnerarchitektur Assembler 21

Übersetzung aus Assembler in Maschinensprache Assembler Instruktion add $t0, $s1, $s2 0 17 18 8 0 32 6 Bit Opcode Maschinen Instruktion 5 Bit Source1 5 Bit Source2 5 Bit Dest 5 Bit Shamt 6 Bit Funct 00000010001100100100000000100000 Name Nr $s0 16 $s1 17 $s2 18 $s3 19 $s4 20 $s5 21 $s6 22 $s7 23 Name Nr $t0 8 $t1 9 $t2 10 $t3 11 $t4 12 $t5 13 $t6 14 $t7 15 Grundlagen der Rechnerarchitektur Assembler 22

Notwendigkeit für andere Instruktionsformate add $t0, $s1, $s2 op rs rt rd shamt funct 6 Bit 5 Bit 5 Bit 5 Bit 5 Bit 6 Bit R Typ? lw $t0, 32($s3) I Typ Opcode 6 Bit Source 5 Bit Dest 5 Bit Konstante oder Adresse 16 Bit Grundlagen der Rechnerarchitektur Assembler 23

Zwischenbilanz Instruktion Format op rs rt rd shamt funct add R 0 reg reg reg 0 32 sub R 0 reg reg reg 0 34 addi (immediate) I 8 reg reg constant lw (load word) I 35 reg reg offset sw (store word) I 43 reg reg offset 6 Bit 5 Bit 5 Bit 5 Bit 5 Bit 6 Bit 16 Bit Grundlagen der Rechnerarchitektur Assembler 24

Beispiel: A[300] = h + A[300] $t1 sei Basisadresse von A und h in $s2 gespeichert. Assembler Code? Maschinen Code (der Einfachheit halber mit Dezimalzahlen)? op rs rt rd adr/shamt funct Instruktion Format op rs rt rd shamt funct add R 0 reg reg reg 0 32 lw (load word) I 35 reg reg offset sw (store word) I 43 reg reg offset Name Nr $s0 16 $s1 17 $s2 18 $s3 19 $s4 20 $s5 21 $s6 22 $s7 23 Name Nr $t0 8 $t1 9 $t2 10 $t3 11 $t4 12 $t5 13 $t6 14 $t7 15 Grundlagen der Rechnerarchitektur Assembler 25

Logische Operationen Grundlagen der Rechnerarchitektur Assembler 26

Logischer Links und Rechts Shift Erinnerung: Logischer Shift. Beispiel: Links Shift um 4 Stellen Rechts Shift um 4 Stellen MIPS Shift Instruktionen sll und srl, sllv, srlv: sll $t2,$s0,4 # $t2 = $s0 << 4 Bits srl $t2,$s0,7 # $t2 = $s0 >> 7 Bits sllv $t2,$s0,$s1 # $t2 = $s0 << $s1 Bits srlv $t2,$s0,$s1 # $t2 = $s0 >> $s1 Bits Beispiel: Maschineninstruktion für obige sll Assembler Instruktion: 0 0 16 10 4 0 6 Bit Opcode 5 Bit Source1 5 Bit Source2 5 Bit Dest 5 Bit Shamt 5 Bit Funct R Typ Grundlagen der Rechnerarchitektur Assembler 27

Arithmetischer Rechts Shift Erinnerung: Arithmetischer Rechts Shift. Beispiel mit 8 Bit: 0011 0000 1101 0111 Rechts Shift um 4 Stellen Rechts Shift um 3 Stellen Arithmetischer Rechts Shift in MIPS: sra $t2,$s0,4 # $t2 = $s0 arithmetisch # um 4 Bits geshiftet srav $t2,$s0,$s1 # $t2 = $s0 arithmetisch # um $s1 Bits geshiftet Grundlagen der Rechnerarchitektur Assembler 28

AND, OR, NOR und XOR Erinnerung: AND. Erinnerung: OR. Erinnerung NOR. Erinnerung XOR. MIPS Instruktionen (R Typ), Beispiel: and $t0,$t1,$t2 # $t0 = $t1 AND $t2 or $t0,$t1,$t2 # $t0 = $t1 OR $t2 nor $t0,$t1,$t2 # $t0 = $t1 NOR $t2 xor $t0,$t1,$t2 # $t0 = $t1 XOR $t2 MIPS Instruktionen (I Typ), Beispiel: andi $t0,$t1,0111 # $t0 = $t1 AND 0111 ori $t0,$t1,1100 # $t0 = $t1 OR 1100 xori $t0,$t1,1100 # $t0 = $t1 XOR 1100 Grundlagen der Rechnerarchitektur Assembler 29

Es gibt gar kein NOT?! Erinnerung NOT (auf Folie zu Zweierkomplement kurz eingeführt): Beobachtung: Wie kann man also NOT($t0) in MIPS realisieren? Grundlagen der Rechnerarchitektur Assembler 30

Zusammenfassung der behandelten Instruktionen Shift Logische Verknüpfung Instruktion sll rd, rs, shamt sllv rd, rt, rs srl rd, rs, shamt srlv rd, rt, rs sra rd, rs, shamt srav rd, rt, rs and rd, rs, rt or rd, rs, rt nor rd, rs, rt xor rd, rs, rt andi rt, rs, imm ori rt, rs, imm xori rt, rs, imm Bedeutung Register rd = Register rs logisch links um den Wert shamt geshiftet. Register rd = Register rs logisch links um den in Register rs gespeicherten Wert geshiftet. Register rd = Register rs logisch rechts um den Wert shamt geshiftet. Register rd = Register rs logisch rechts um den in Register rs gespeicherten Wert geshiftet. Register rd = Register rs arithmetisch rechts um den Wert shamt geshiftet. Register rd = Register rs arithmetisch rechts um den in Register rs gespeicherten Wert geshiftet. Register rd = Register rs AND Register rt. Register rd = Register rs AND Register rt. Register rd = Register rs AND Register rt. Register rd = Register rsand Register rt. Register rt = Register rs AND Konstante imm Register rt = Register rs AND Konstante imm Register rt = Register rs AND Konstante imm Grundlagen der Rechnerarchitektur Assembler 31

Schwieriges Quiz MIPS Assemblercode um folgende Funktion zu berechnen: $s1 = die ersten 8 Bits von 4 * NOT($s1 AND $s2) Tipp: wir brauchen and, nor und sll Grundlagen der Rechnerarchitektur Assembler 32