Namensräume - der PREFIX-Befehl

Größe: px
Ab Seite anzeigen:

Download "Namensräume - der PREFIX-Befehl"

Transkript

1 65 MMIX Befehle 33 Namensräume - der PREFIX-Befehl Der PREFIX-Befehl ist ein Assembler-Befehl Er wird verwendet um in einem Programm vorkommenden Namen vom Assembler-Präprozessor durch Voranstellen einer Zeichenkette automatisiert ändern zu lassen Dazu wird der PREFIX-Befehl mit der voranzustellenden Zeichenkette als Operand aufgerufen PREFIX Zeichenkette Ab dieser Anweisung setzt der Assembler-Präprozessor vor jeden Namen die angegebene Zeichenkette Hat beispielsweise die Zeichenkette den Wert abc: dann wird ein Name def in abc:def geändert Fügt man vor jede Funktion einen PREFIX-Befehl mit dem Funktionsnamen als Zeichenkette ein erzeugt man automatisch für jede Funktion einen eigenen Namensraum Eine Variable i in der Funktion fkt bekommt dann den (globalen) Namen fkti und eine Variable i in der Funktion fkt2 den Namen fkt2i Auf diese Weise kann der Assembler beide Variable als unterschiedliche Variable erkennen und es kommt zu keinem Konflikt wenn der Assembler beispielsweise i sowohl durch $ ersetzen soll (für die Funktion fkt) als auch durch $2 (für die Funktion fkt2) Um den Funktionsnamen besser vom Variablennamen abgrenzen zu können bietet es sich an an die Prefix-Zeichenkette noch ein markantes Zeichen anzuhängen beispielsweise einen Bindestrich oder einen Doppelpunkt Um einen Namensraum zu beenden dh um den Assembler-Präprozessor anzuweisen vorkommenden Namen die Zeichenkette nicht mehr voranzustellen wird der PREFIX- Befehl mit einem Doppelpunkt als Operand aufgerufen PREFIX : Will man innerhalb eines Namensraums verhindern dass der Assembler-Präprozessor einen Namen ändert schreibt man vor den betreffenden Namen einen Doppelpunkt zb :def statt def Auf diese Weise kann man auf globale Namen wie zb den Stackpointer SP zugreifen a) Geben Sie die Anweisung an mit denen Sie den Namensraum Main: eröffnen und in diesem Namensraum die globale Marke Main definieren

2 34 6 MMIX-Prozessor b) Wie kann man einen Namensraum beenden dh wie kann man den Assembler anweisen Marken/Namen nicht mehr umzuwandeln? c) Wie kann man innerhalb eines Namensraums verhindern dass der Assembler einer bestimmten Marke bzw einem bestimmten Namen die im PREFIX-Befehl angegebene Zeichenkette voranstellt? T d) Wozu dient der PREFIX-Befehl? T e) Welche Auswirkung hat der Befehl PREFIX mein_prefix auf darauf folgende MMIX- Anweisungen?

3 65 MMIX Befehle 35 T f) Geben Sie die Anweisungen an mit denen Sie den Namensraum Fkt: eröffnen und die globale Marke Fkt anlegen : Fht Prefix Fkt : Funktionsaufrufe Mit Funktionen werden logisch zusammengehörige Befehle zur Bereitstellung einer Gesamt-Funktionalität zusammengefasst und durch Funktionsaufrufe von beliebigen Stellen im Programm abrufbar Durch diese Struktur gebende Maßnahme werden Programme übersichtlicher und kürzer: Übersichtlicher da der Programm-Code die Zerlegung eines großen Problems in kleinere Probleme durch Funktionsaufrufe widerspiegelt und kürzer da eine Funktionalität (viele Befehle) nur einmal aus Befehlen zusammengesetzt werden muss und durch Sprünge in die Funktion (wenige Befehle) beliebig oft verwendet werden kann Beispiel: -Adresse von Personen aus einer csv-datei (csv = comma separated values = Werte durch Komma getrennt) extrahieren und jeder Person ein schreiben: Aufruf einer Funktion welche den Namen der csv-datei als Parameter übergeben bekommt und den Inhalt der Datei in den String s einliest Aufruf einer Funktion welche den String s sowie das Zeichen \n als Parameter übergeben bekommt den String an den Zeichen \n in Teil-Stings s s 2 auftrennt und als Ergebnis ein Array von Zeigern auf die Teil-Strings zurückliefert Für jeden Teilstring s i : Aufruf einer Funktion welche den String s i und das Komma-Zeichen als Parameter übergeben bekommt den String an den Kommas in Teilstrings s ij auftrennt und als Ergebnis ein Array von Zeigern auf die Teil-Strings zurückliefert Auswahl des Teil-Strings s ij in dem die -Adresse gespeichert ist Für jede -Adresse s ij : Aufruf einer Funktion die als Parameter die - Adresse und den -Text bekommt und den -Text an die angegebene -Adresse verschickt

4 Staehpyoiter 65 MMIX Befehle 32 T i) Was ist der Stack? Der Stach ist in Bacich in Arbetsspeicher der lek Pngrammdaten Variable lek adressen a Rich sprung wie : Mda Arbetsspeicher gesiderk Res T j) Wo beginnt der Stack und in welche Richtung wächst er? eutha T k) Was ist der Stack-Pointer? T l) Wie werden Daten adressiert die auf dem Stack liegen? Stade - Pointer Die Paton Werder inner adressiat ciber der I die ein Offset addict wind Basis adresse auf

5 322 6 MMIX-Prozessor T m) Welche Operationen muss man ausführen um die Werte zweier Register (acht Byte breite Datenworte) auf dem Stack abzulegen? " wig ] negative : Befell inspspeidn 2 Spt T n) Wie wird der Stack bei Funktionsaufrufen verwendet? ers

6 - 65 MMIX Befehle 323 T o) Geben Sie den Befehl an mit dem Sie für den Stack-Pointer ein globales Register reservieren und dieses mit x4 initialisieren SP GREG # T p) Warum initialisieren wir den Stack-Pointer mit x4 dh mit dem Beginn des Poolsegments und nicht mit dem Ende des Datensegments?? Befell : irsendetwasarf dem Stack sp von der Adresse abttiehen nd down speichn ooiiootoipoerisdegfpyae T q) Geben Sie die MMIX-Befehle an mit denen Sie Register $ und $2 auf den Stack n schreiben und dann die Funktion fkt aufrufen Nehmen Sie an dass Ihr Code im Namensraum Main: steht und fkt im Namensraum Fkt: unter dem Namen :fkt angelegt wurde Sichern Sie die Rücksprungadresse in Register : SUB : SP :SB 2 STO $ :S P Seo $ : SP GO $ : two / : } -

7 MMIX-Prozessor Nehmen Sie an dass Sie eine Funktion im Namensraum Fkt: implementieren T r) Geben Sie die MMIX-Befehle an mit denen Sie die Register 2 und 3 auf den Stack sichern und anschließend zwei acht Byte breite Parameter vom Stack in die Register und 2 einlesen sob :S spu& Dq #jbg # STO $9 STO $ $-2 :SBb $2 2bg#S7$3jSP 5 :sp 29 µ# LDO $ :SP 4 ananetwz 'B5 ST LDO :S T s) Zeichnen Sie wie der Stack nach diesen Operationen aussieht e if FF f ie#sx3kf $- $2(Par 4

8 65 MMIX Befehle 325 T t) Im Hauptprogramm wurden die Parameter in die Register und 2 geschrieben Im Unterprogramm wurden Register und 2 dann auf den Stack gesichert und dann dieselben Werte wieder vom Stack in Register und 2 geladen obwohl sich die Werte von Register und 2 in der Zwischenzeit nicht geändert hatten Warum haben wir und diesen Schritt nicht gespart sondern dieselben Werte die in Registern und 2 waren nochmal reingeschrieben? T u) Warum speichert man die Rücksprungadresse auf dem Stack? T v) Was würde passieren wenn der Stack so groß wird dass er mit den Daten zusammenstößt die am Beginn des Datensegments liegen?

9 ' MMIX-Prozessor T w) Geben Sie die MMIX-Befehle an mit denen Sie den Inhalt von Register 3 als Ergebnis auf dem Stack ablegen dann die Register 2 und 3 wiederherstellen und anschließend zurück zum Funktionsaufrufer springen STO $3 :SP LDO $ :SP LDO $ isp LDO $2 :SP 6 LD $3 Add - SP :SP 5 24 B :SP5b Go $ $9 T x) Nehmen Sie an Sie sind wieder im Hauptprogramm Geben Sie die Befehle an mit denen Sie das Ergebnis der Funktion vom Stack in das Register einlesen LDO $ :sp ADD :SP isp - T y) Warum muss der Stack-Pointer angepasst werden nachdem das Ergebnis vom Stack geladen wurde?

10 334 7 Pipelining 7 Pipelining-Datenpfad Nachfolgende Abbildung zeigt einen Pipelining-Datenpfad Sp-Puls 4 BZ Add Adresse Befehls- Speicher Daten Clk BR Reg-Schreiben Ergebnisauswahl ES Sp-Schreiben Reg-Puls Zugriffs-Art 2 SP Steuerung ALU-Funktion 243 Direktoperand AF 32 X-Auswahl Schreib- Daten $X Lese- 623 Daten $X $X 32 Schreiben/ Lese- Lesen $X Daten $Y $Y 5 Lesen $Y 32 7 Lesen $Z Registerblock Schreiben Clk2 Lese- Daten $Z $Z Dir Op Clk3 ALU ES SP $X Erg ALU 2 Zugriffs- Art Schreib- Daten Adr Clk4 Daten- Speicher Schreiben Lese- Daten ES Lese Dat Erg ALU X X X Befehlsspeicher Allzweck-Registerblock (Operanden bereitstellen) ALU Datenspeicher und der Übergang ALU/Datenspeicher! Allzweck-Registerblock (Ergebnis/Lesewort in Register ablegen) sind durch sog Pipelining-Register voneinander getrennt Gleichzeitig teilen die Pipelining-Register den Datenpfad in Stufen auch Phasen genannt ein Bei dem gezeigten Datenpfad sind es fünf Stufen/Phasen: Befehl holen (BH; Befehls-Speicher) Befehl decodieren und Operanden bereitstellen (BD; Allzweck-Registerblock und Steuerung) Befehl ausführen (AF; ALU) Speicherzugriff (SP; Datenspeicher) und Ergebnis schreiben (ES; Allzweck-Registerblock) Durch dieses Vorgehen können die von den einzelnen Komponenten bereitgestellten Datenworte sofort in den Pipelining-Registern zwischengepuffert werden Damit werden die Komponenten frei und können sofort von nachfolgenden Befehlen genutzt werden Dadruch verringert sich zwar nicht die Auführungszeit der einzelnen Befehle Der Befehls-

11 ^ 7 Pipelining-Datenpfad 335 Durchsatz des Datenpfads (Anzahl der Befehle die pro Zeiteinheit abgearbeitet werden können) kann bei einer n stufigen Pipeline jedoch bis um den Faktor n gesteigert werden Ein Pipeline-Füll-Diagramm zeigt für verschiedene Zeitpunkte t i an welche Befehle sich gerade in welcher Pipeline-Stufe befinden Gegeben ist folgende MMIX-Befehlssequenz: ADD $$23 SUB $2$2$3 MUL $3$35 DIV $4$44 LDW $5$254 LDO $6$254 OR $7$7#AC AND $$#DC NEG $95 a) Tragen Sie in das nachfolgende Pipeline-Füll-Diagramm die Zuordnung Befehl $ Pipelinestufe für die angegebenen Zeitpunkte 2 9 ein t [clk] BH BD AF SP ES BH BD AF SP BH BD AF SP ES BH BD AF = BH BD AF SP ES BH BD BH BD AF SP ES BH BH BD AF SP ES

12 Pipelining Gegeben ist der folgende Ausschnitt aus einer MMIX Codesequenz: SUB $2$5 Zeile LDO $5$2* Zeile 2 OR $$2$3 Zeile 3 SRU $$5$ Zeile 4 b) Geben Sie alle auftretenden Datenkonflikte an Nehmen Sie dabei an dass der Registerblock ein Datenwort das gerade in ihn hineingeschrieben wird nicht gleichzeitig am Ausgang ausgegeben werden kann Gegeben ist der folgende Ausschnitt aus einer MMIX Codesequenz: ADD $$3 Zeile OR $2$$3 Zeile 2 SRU $$2$ Zeile 3 STO $$254 Zeile 4 T c) Geben Sie alle auftretenden Datenkonflikte an Nehmen Sie dabei an dass der Registerblock ein Datenwort das gerade in ihn hineingeschrieben wird nicht gleichzeitig am Ausgang ausgegeben werden kann 2 A Z anrtmhhnflilt wegn $ Z 2 & 23 w $2 Z wg $ 73 & 74 ws $

13 72 Pipelining-Konflikte 339 Auflösen von Datenkonflikten durch Einfügen von NOP-Befehlen Um in obigem Beispiel sicherzustellen dass der Multiplikations-Befehl den vom Additions-Befehl geänderten Wert verwendet können zwischen Additions-Befehl und dem Multiplikations-Befehl sog NOP-Befehle eingefügt werden NOP steht für no operation und meint Befehle die nichts tun dh keine Zustandsänderung (Änderung von Werten in Registern Speicher) bewirken Beim MMIX wird der NOP-Befehl ( sympathize with your machinery ) genannt a) Geben Sie an mit Sie mit -Befehlen zwischen ADD $$2$3 und MUL $3$2$ dafür sorgen dass der Multiplikations-Befehl den vom Additions-Befehl geänderten Wert aus dem Registerblock ausliest ADD $}$2 $3 Mul $3 $2 $ Sp-Puls 4 BZ Add Adresse Befehls- Speicher Daten Clk Reg-Schreiben Ergebnisauswahl ES Sp-Schreiben Reg-Puls Zugriffs-Art 2 SP Steuerung ALU-Funktion 243 Direktoperand AF 32 X-Auswahl Registerblock Schreiben Clk2 Schreib- Daten $X Lese- 623 Daten $X $X 32 Schreiben/ Lese- BR Lesen $X Daten $Y $Y Lese- $Z 5 Daten $Z Lesen $Y 7 Dir 32 Lesen $Z Op Clk3 ALU ES SP $X Erg ALU 2 Zugriffs- Art Schreib- Daten Adr Clk4 Daten- Speicher Schreiben Lese- Daten ES Lese Dat Erg ALU X X X

14 34 7 Pipelining T b) Geben Sie an wie Sie mit -Befehlen zwischen LDB $$254 und MUL $3$2$ dafür sorgen dass der Multiplikations-Befehl den vom Lade-Befehl geänderten Wert aus dem Registerblock ausliest LDD $ $254 Mol $3 $ } $ Auflösen von Datenkonflikten mittels Befehlsumstellung Datenkonflikte mit NOP-Befehle aufzulösen funktioniert zwar verringert jedoch bei Datenabhängigkeiten den durch Pipelining effektiv erreichbaren Befehls-Durchsatz Unter Umständen können jedoch zwischen der Änderung eines Werts und der nächsten Verwendung des geänderten Werts Befehle eingefügt werden die ohnehin ausgeführt werden müssen und unabhängig vom geänderten Wert sind Betrachten Sie nachfolgende Befehlssequenz ADD $$2$3 MUL $3$2$ SUB $4$5 SRU $5$52 SL $6$32 a) Geben Sie an wie Sie den Code durch Befehlsumstellung schneller ausführbar machen können

15 72 Pipelining-Konflikte 34 Gegeben ist die nachfolgend angegebene Befehlssequenz ADD $$2$3 MUL $2$5$ SUB $4$3 SRU $5$62 T b) Geben Sie an wie Sie den angegebenen Code durch Befehlsumstellung schneller ausführbar machen können als durch ausschließliches Einfügen von NOP- Befehlen A DD $ $2 $3 sub $n $3 SWTM Mule $2 $5 $

16 - 72 Pipelining-Konflikte 345 Nehmen Sie die folgenden Registerwerte an: $ = x $2 = x22 $3 = x33 $254 = x2 T f) Tragen Sie in nachfolgende Abbildung den Inhalt der Pipeline-Register für die unter den Pipeline-Registern angegebenen Befehle ein Geben Sie für alle irrelevanten Einträge X an Nehmen Sie an dass von der ALU-benötigte und noch nicht in den Registerblock geschriebene Ergebnisse über Forwarding-Pfade an das der BD-Phase folgende Pipeline-Register geleitet werden Reg Schr: & Erg Ausw: Sp Schr: Reg Schr: Zugr-Art: X Erg Ausw: ALU: x5 Sp Schr: Reg Schr: Dir Op: Zugr-Art: X Erg Ausw: $X: - $Y: $X: 22 - Lese-Daten: < 7 ADD $3$254 $Z: 26 : Erg ALU: 26 Erg ALU: Dir Op: 2 X: Oxon X: 2 X: Ox ADD $3$254 SUB $$3$2 OR $2$236 AND $3$22 2 o^o qro Bef $Y$Y$Z s )

17 72 Pipelining-Konflikte 347 Gegeben ist die folgende Codesequenz: LDT $3$232 Zeile SUB $2$4 Zeile 2 OR $$2$3 Zeile 3 STO $2$254$ Zeile 4 b) Tragen Sie in nachfolgendes Pipeline-Füll-Diagramm die ausgeführten Befehle sowie die benötigten Forwarding-Pfade ein wenn sie den Strukturkonflikt mit einem Forwarding-Pfad auflösen BH BD AF SP ES BH BD AF SP ES BH BD AF SP ES BH BD AF SP ES T c) Tragen Sie in nachfolgende Tabelle ein wie Sie den Strukturkonflikt mit einem Stall auflösen können LDT SUB OR ES BH BD AF SP ago Essaid STO BABBBD AF

18 35 7 Pipelining T c) Geben Sie MMIX-Befehle an die den nachfolgenden C-Code implementieren Verwenden Sie zur Realisierung der do-while-schleife diejenige Variante des Sprungbefehls der mit höherer Wahrscheinlichkeit die tatsächlich auszuführenden Befehle in die Pipeline lädt C-Code: int a b; a = ; b = ; do { b += (a * b); a--; } while( a >= ); MMIX-Code: Start Set a a Set 6 megs but a AdD 6 but 6 to SUB ga PBNW a Start T d) Um wieviele Takte würde der Code langsamer ausgeführt werden wenn die falsche Variante des Sprungbefehls verwendet werden würde?

stackpointer dentals Basisadresse Arbeitsspeicher, Program mdaten wte Reicksprungadreson ltbergabe parameter Dater warden immeruber stack pointer

stackpointer dentals Basisadresse Arbeitsspeicher, Program mdaten wte Reicksprungadreson ltbergabe parameter Dater warden immeruber stack pointer 322 6 MMIXProzessor T i) Was ist der Stack? Bereich im Program mdaten wte lokale Arbeitsspeicher der lokale Register Reicksprungadreson ltbergabe parameter enthaet T j) Wo beginnt der Stack und in welche

Mehr

LOC Data_Segment A OCTA a) Bestimmen Sie das 32 Bit breite Befehlswort des Befehls JMP Start.

LOC Data_Segment A OCTA a) Bestimmen Sie das 32 Bit breite Befehlswort des Befehls JMP Start. humpl 6.5 MMIX Befehle 299 Betrachten Sie die folgenden Befehle: LOC Data_Segment GREG @ A OCTA 1000 a IS $1 b IS $2 LOC #100 Main LDB aa Start SUB aa1 swathe 2 Befehl OR aa0 BZ aend JMP Start End TRAP

Mehr

LOC Data_Segment

LOC Data_Segment 65 MMIX Befehle 291 In folgendem Programmcode wird XXX XXXXXXXX als Platzhalter für einen einzelnen Befehl verwendet: : LOC Data_Segment a iii GREG @ :;fff ±t A OCTA #FFFFFFFFFFFFFFFF B TETRA #87654321

Mehr

Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?

Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt? 6.5 MMIX Befehle 291 Aufrufkonventionen Eine Aufrufkonvention (engl. calling convention) legt fest, wie einer Funktion Parameter übergeben werden und wie der Rückgabewert zurückgegeben wird. Damit spezifiziert

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur MMIX-Crashkurs Matthias Dräger, Markus Rudolph E-Mail: mdraeger@mi.fu-berlin.de rudolph@mi.fu-berlin.de www: tinyurl.com/mmix2010 www.matthias-draeger.info/lehre/sose2010ti2/mmix.php

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur 3.Unterprogramme in MMIX Matthias Dräger E-Mail: www: mdraeger@mi.fu-berlin.de www.matthias-draeger.info/lehre/sose2010ti2/ tinyurl.com/sose2010ti2 Zuletzt bearbeitet:

Mehr

Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET

Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET Stack, Stackpointer, UP Stack (Stapel, FIFO) wird benötigt UP-Ruf:

Mehr

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: 1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address

Mehr

T c) Daten welcher Größenordnung kann ein Register aufnehmen: Byte, kilobytes, megabytes, gigabytes or terabytes?

T c) Daten welcher Größenordnung kann ein Register aufnehmen: Byte, kilobytes, megabytes, gigabytes or terabytes? 222 6 MMIXProzessor Verständnisfragen/Aufgaben Allgemein T a) Was ist ein Register? Kleiner aber Schneller Speicher T b) Wo findet man Register in einem ComputerSystem? Prozessor T c) Daten welcher Größenordnung

Mehr

Das Prinzip an einem alltäglichen Beispiel

Das Prinzip an einem alltäglichen Beispiel 3.2 Pipelining Ziel: Performanzsteigerung é Prinzip der Fließbandverarbeitung é Probleme bei Fließbandverarbeitung BB TI I 3.2/1 Das Prinzip an einem alltäglichen Beispiel é Sie kommen aus dem Urlaub und

Mehr

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

Übungsblatt 10 (Block C 2) (16 Punkte) georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16

Mehr

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 8 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 7 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Übungsblatt 6. Implementierung einer Befehlspipeline

Übungsblatt 6. Implementierung einer Befehlspipeline Praktikum zur Vorlesung Prozessorarchitektur SS 2016 Übungsblatt 6. Implementierung einer Befehlspipeline 1.1. Einführung Durch die Einteilung der Befehlsverarbeitung in mehrere Zyklen in dem vorangegangenen

Mehr

CPU. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

CPU. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 CPU Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 CPU 1/62 2012-02-29 CPU Übersicht: Pipeline-Aufbau Pipeline- Hazards CPU

Mehr

######################### Zeichenkette auswerten ###################################

######################### Zeichenkette auswerten ################################### Informatik 3 Übung 06 Georg Kuschk 6.3) MIPS #Aufgabe 6.3) #Georg Kuschk #ACHTUNG : Da laut Forum davon ausgegangen werden soll, dass der Eingabewert, # falls er denn kleiner gleich 10 Stellen besitzt,

Mehr

Computational Engineering I

Computational Engineering I DEPARTMENT INFORMATIK Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Martensstraße 3, 91058 Erlangen 12.02.2014 Klausur zu Computational Engineering I............

Mehr

Viel Erfolg bei der Bearbeitung der Aufgaben!

Viel Erfolg bei der Bearbeitung der Aufgaben! Musterlösung Name:... 1 2 3 4 5 Gesamt Note 12 8 10 15 11 56 Bitte tragen Sie auf dem Deckblatt Ihr Namen und Ihre Matrikelnummer ein und auf allen weiteren Seiten nur noch Ihre Matrikelnummer. Lösungen

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Datenpfaderweiterung Der Single Cycle Datenpfad des MIPS Prozessors soll um die Instruktion min $t0, $t1, $t2 erweitert werden, welche den kleineren

Datenpfaderweiterung Der Single Cycle Datenpfad des MIPS Prozessors soll um die Instruktion min $t0, $t1, $t2 erweitert werden, welche den kleineren Datenpfaderweiterung Der Single Cycle Datenpfad des MIPS Prozessors soll um die Instruktion min $t0, $t1, $t2 erweitert werden, welche den kleineren der beiden Registerwerte $t1 und $t2 in einem Zielregister

Mehr

Besprechung des 5. Übungsblattes Parallelität innerhalb der CPU Pipelining

Besprechung des 5. Übungsblattes Parallelität innerhalb der CPU Pipelining Themen heute Besprechung des 5. Übungsblattes Parallelität innerhalb der CPU Pipelining Organisatorisches Wie schon in den vorhergehenden Tutorien erwähnt, ist Mehrfachabgabe, außer bei Programmieraufgaben,

Mehr

Name: Vorname: Matr.-Nr.: 4. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen stets ein mikroprogrammierbares Steuerwerk verwenden.

Name: Vorname: Matr.-Nr.: 4. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen stets ein mikroprogrammierbares Steuerwerk verwenden. Name: Vorname: Matr.-Nr.: 4 Aufgabe 1 (8 Punkte) Entscheiden Sie, welche der folgenden Aussagen zum Thema CISC/RISC-Prinzipien korrekt sind. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

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

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

4.2 Universalrechner: Schaltung unabhängig vom Problem 185

4.2 Universalrechner: Schaltung unabhängig vom Problem 185 4.2 Universalrechner: Schaltung unabhängig vom Problem 85 a) Geben Sie binär die Befehlsworte an, mit denen Sie die Eingänge a, b und c in die Register R, R2 und R übernehmen. K D M4 M M2 M Kommentar XXXXXXXXXXX

Mehr

Übersicht Shell-Scripten

Übersicht Shell-Scripten !!!! Wichtig: Bei Shell-Scripten enden die Zeilen nicht mit einem Strichpunkt!!!! Erste Zeile eines Shell-Scripts: #! /bin/bash Variablen in Shell-Scripts: Variablennamen müssen mit einem Buchstaben beginnen,

Mehr

PIC16 Programmierung in HITECH-C

PIC16 Programmierung in HITECH-C PIC16 Programmierung in HITECH-C Operatoren: Arithmetische Operatoren - binäre Operatoren + Addition - Subtraktion * Multiplikation / Division % Modulo + - * / sind auf ganzzahlige und reelle Operanden

Mehr

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte: Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

Lösungsvorschlag zur 3. Übung

Lösungsvorschlag zur 3. Übung Prof Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik Wintersemester 09/10 1 Präsenzübungen 11 Schnelltest Lösungsvorschlag zur Übung a) Welche der folgenden Aussagen entsprechen

Mehr

11. Unterprogrammtechnik

11. Unterprogrammtechnik 11 Unterprogrammtechnik 111 Sprung und Rücksprung 112 Retten der Register 113 Parameter-Übergabe Programmierkurs II Wolfgang Effelsberg 11 Unterprogrammtechnik 11-1 111 Sprung und Rücksprung BSR Verzweige

Mehr

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

Informatik Rechnerinterne Vorgänge: Programmstrukt. (Lsg.) Gierhardt

Informatik Rechnerinterne Vorgänge: Programmstrukt. (Lsg.) Gierhardt Informatik Rechnerinterne Vorgänge: Programmstrukt. (Lsg.) Gierhardt 1. Die Zahlen von 1 bis 10 sollen ausgegeben werden (a) absteigend mit einer do while-schleife 3 zehn DEF 10 ; int zehn = 10 4 Anfang

Mehr

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

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Fachgebiet Rechnerarchitektur Fachbereich Informatik Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Aufgabe 9.1: Dinatos-Algorithmus-Analyse Die folgenden Verilog-Zeilen

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

Technische Informatik 1 - HS 2017

Technische Informatik 1 - HS 2017 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2017 Übung 8 Datum: 30. 11. 1. 12. 2017 In dieser Übung soll mit Hilfe des Simulators WinMIPS64 die

Mehr

, WS2013 Übungsgruppen: Di., Fr.,

, WS2013 Übungsgruppen: Di., Fr., VU Technische Grundlagen der Informatik Übung : Stack, Pipelining., WS20 Übungsgruppen: Di., 0.01. Fr.,.01.201 Aufgabe 1: Stack - Funktionsweise Erläutern Sie die Funktionsweise eines Stacks bzw. Kellerspeichers

Mehr

Computational Engineering I

Computational Engineering I DEPARTMENT INFORMATIK Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Martensstraße 3, 91058 Erlangen 01.02.2017 Probeklausur zu Computational Engineering

Mehr

Was ist die Performance Ratio?

Was ist die Performance Ratio? Was ist die Performance Ratio? Wie eben gezeigt wäre für k Pipeline Stufen und eine große Zahl an ausgeführten Instruktionen die Performance Ratio gleich k, wenn jede Pipeline Stufe dieselbe Zeit beanspruchen

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100

Mehr

WiMa-Praktikum 1. Woche 8

WiMa-Praktikum 1. Woche 8 WiMa-Praktikum 1 Universität Ulm, Sommersemester 2017 Woche 8 Lernziele In diesem Praktikum sollen Sie üben und lernen: Besonderheiten der For-Schleife in Matlab Wiederholung des Umgangs mit Matrizen und

Mehr

10.4 Konstante Objekte

10.4 Konstante Objekte 10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären

Mehr

Technische Informatik 1 - HS 2016

Technische Informatik 1 - HS 2016 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2016 Lösungsvorschläge für Übung 6 Datum: 24. 25. 11. 2016 Pipelining 1 Taktrate / Latenz In dieser

Mehr

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!! !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!! Erste Zeile eines PERL-Scripts: #! /usr/bin/perl Variablen in PERL: Normale Variablen beginnen mit einem $-Zeichen Array-Variablen beginnen mit

Mehr

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen

Mehr

Lösung 5. Übungsblatt

Lösung 5. Übungsblatt Fakultät Informatik, Technische Informatik, Lehrstuhl für Eingebettete Systeme Lösung 5. Übungsblatt Entwicklung eines Mikroprogrammsteuerwerks und Maschinen-programmierung für einen einfachen Rechner.

Mehr

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

Musterlösungen Technische Informatik 2 (T2) Prof. Dr.-Ing. D. P. F. Möller SS 2004 VAK 18.004 Musterlösungen Technische Informatik 2 (T2) Prof. Dr.-Ing. D. P. F. Möller Aufgabenblatt 2.5 Lösung 2.5.1 Befehlszähler (Program Counter, PC) enthält Adresse des nächsten auszuführenden

Mehr

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference

Mehr

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

Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Prog. Counter Memory Adress Register Befehl holen Incrementer Main store Instruction register Op-code Address Memory Buffer Register CU Clock Control

Mehr

Vorlesung Rechnerarchitektur

Vorlesung Rechnerarchitektur Vorlesung Rechnerarchitektur Sommersemester 2017 Carsten Hahn 8. Juni 2017 Agenda Grundlagen: Wiederholung Kontroll-Strukturen Stack-Speicher Unterprogramme I Unterprogramme II Call-by-Value (CBV) vs.

Mehr

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9 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

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 1 Maschinenunabhängige Optimierungen Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 Optimierungen Automatische Optimierungen sind nötig, weil unoptimierter Code meist besser lesbar ist.

Mehr

T e) Wie wird im Speicher an der Adresse 0x die 32 Bit-Zahl

T e) Wie wird im Speicher an der Adresse 0x die 32 Bit-Zahl 63 Speicher 237 T e) Wie wird im Speicher an der Adresse 0x2000000000000008 die 32 BitZahl 0x12345678 abgelegt im Falle einer BigEndian und einer LittleEndianMaschine? Adresse Big Endian Little Endian

Mehr

Aufgabenblatt 1. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Aufgabenblatt 1. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt: Aufgabenblatt 1 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 03.11.2017 13:00 Uhr in TUWEL hoch.

Mehr

Beispielhafte Prüfungsaufgaben zur Vorlesung TI I, gestellt im Frühjahr 2009

Beispielhafte Prüfungsaufgaben zur Vorlesung TI I, gestellt im Frühjahr 2009 Beispielhafte Prüfungsaufgaben zur Vorlesung TI I, gestellt im Frühjahr 2009 Die beigefügte Lösung ist ein Vorschlag. Für Korrektheit, Vollständigkeit und Verständlichkeit wird keine Verantwortung übernommen.

Mehr

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

Mehr

Einführung in die Programmierung II. 5. Zeiger

Einführung in die Programmierung II. 5. Zeiger Einführung in die Programmierung II 5. Zeiger Thomas Huckle, Stefan Zimmer 16. 5. 2007-1- Bezüge als Objekte Bisher kennen wir als Bezüge (Lvalues) nur Variablennamen Jetzt kommt eine neue Sorte dazu,

Mehr

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Strings. Daten aus Dateien einlesen und in Dateien speichern. Strings. Daten aus Dateien einlesen und in Dateien speichern. Strings Ein String ist eine Zeichenkette, welche von MATLAB nicht als Programmcode interpretiert wird. Der Ausdruck 'a' ist ein String bestehend

Mehr

Pipelining. Die Pipelining Idee. Grundlagen der Rechnerarchitektur Prozessor 45

Pipelining. Die Pipelining Idee. Grundlagen der Rechnerarchitektur Prozessor 45 Pipelining Die Pipelining Idee Grundlagen der Rechnerarchitektur Prozessor 45 Single Cycle Performance Annahme die einzelnen Abschnitte des MIPS Instruktionszyklus benötigen folgende Ausführungszeiten:

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

Assembler-Unterprogramme

Assembler-Unterprogramme Assembler-Unterprogramme Rolle des Stack Prinzipieller Ablauf Prinzipieller Aufbau Unterprogramme void main(void) int sub(int i) { { int i,k; return i*2; i = sub(13); } k = sub(14); } Wie macht man das

Mehr

Prozessor HC680 fiktiv

Prozessor HC680 fiktiv Prozessor HC680 fiktiv Dokumentation der Simulation Die Simulation umfasst die Struktur und Funktionalität des Prozessors und wichtiger Baugruppen des Systems. Dabei werden in einem Simulationsfenster

Mehr

Teil 2: Rechnerorganisation

Teil 2: Rechnerorganisation Teil 2: Rechnerorganisation Inhalt: Zahlendarstellungen Rechnerarithmetik schrittweiser Entwurf eines hypothetischen Prozessors mit Daten-, Adreß- und Kontrollpfad Speicherorganisation Mikroprogrammierung

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

Mehr

Daniel Betz Wintersemester 2011/12

Daniel Betz Wintersemester 2011/12 Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register

Mehr

Rechnerarchitektur (RA)

Rechnerarchitektur (RA) 2 Rechnerarchitektur (RA) Sommersemester 27 Pipelines Jian-Jia Chen Informatik 2 http://ls2-www.cs.tu.de/daes/ 27/5/3 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken

Mehr

Rechnerarchitektur (RA)

Rechnerarchitektur (RA) 2 Rechnerarchitektur (RA) Sommersemester 26 Pipelines Jian-Jia Chen Informatik 2 http://ls2-www.cs.tu.de/daes/ 26/5/25 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

Mehr

9. Die Adressierungsarten des MSP 430

9. Die Adressierungsarten des MSP 430 9. Die Adressierungsarten 9.1 Übersicht über die Adressierungsarten 9.2 -Operanden 9.3 Indexregister mit Distanz 9.4 Symbolische (relativ zum ) 9.5 Absolute 9.6 Indirekte 9.7 Indirekte Adressierung mit

Mehr

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern Datenbanken werden durch ein spezielles Programm verwaltet, einen sogenannten Datenbankserver, in unserem Fall den MySQL-Datenbankserver.

Mehr

Von-Neumann-Architektur

Von-Neumann-Architektur Von-Neumann-Architektur Bisher wichtig: Konstruktionsprinzip des Rechenwerkes und Leitwerkes. Neu: Größerer Arbeitsspeicher Ein- und Ausgabewerk (Peripherie) Rechenwerk (ALU) Steuerwerk (CU) Speicher...ppppp...dddddd..

Mehr

Übung 7 Rechnerstrukturen

Übung 7 Rechnerstrukturen Übung 7 Rechnerstrukturen Aufgabe 7.: X X2 X3 X4 F F2 F3 F4 X-X4 sind alle möglichen Binär-Werte. F-F2 ist das Ergebnis der Multiplikation von (XX2) und (X3X4). Dabei funktioniert die Multimpliation folgendermaßen:

Mehr

float *point(float a, float b); // Funktionsdeklaration Zeiger als Funktionswert // point liefert als Wert die Adresse seines Ergebnisses

float *point(float a, float b); // Funktionsdeklaration Zeiger als Funktionswert // point liefert als Wert die Adresse seines Ergebnisses Zeiger auf Funktionen 1 Zeiger als Funktionswert... 1 2 "Zeiger als Funktionswert" versus "Zeiger auf eine Funktion"... 2 2.1 Das Beispiel zu Zeiger auf eine Funktion veranschaulicht den Sachverhalt...

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Zusammenfassung der Assemblerbefehle des 8051

Zusammenfassung der Assemblerbefehle des 8051 Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach

Mehr

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling Aufgabe 1: Sie haben in der Vorlesung einen hypothetischen Prozessor kennen

Mehr

Der Intel 8086 Reto Gurtner 2005

Der Intel 8086 Reto Gurtner 2005 Der Intel 8086 Reto Gurtner 2005 1 1. DIE INTERNEN REGISTER... 3 1.1 ALLGEMEINE REGISTER AX, BX, CX UND DX... 3 DAS AX-REGISTER... 4 DAS BX-REGISTER... 4 DAS CX-REGISTER... 5 DAS DX-REGISTER... 5 1.2 DIE

Mehr

Prozessorarchitektur. Kapitel 1 - Wiederholung. M. Schölzel

Prozessorarchitektur. Kapitel 1 - Wiederholung. M. Schölzel Prozessorarchitektur Kapitel - Wiederholung M. Schölzel Wiederholung Kombinatorische Logik: Ausgaben hängen funktional von den Eingaben ab. x x 2 x 3 z z = f (x,,x n ) z 2 z m = f m (x,,x n ) Sequentielle

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 11. Vorlesung 14.06.2017 1 Schleifen 2 do...while do block while ( bedingung ); block: eine Anweisung oder Anweisungen in { block bed JA NEIN 3 while while ( bedingung ) block

Mehr

Speicher. T c) Daten welcher Größenordnung kann ein Register aufnehmen: Byte, kilobytes, megabytes, gigabytes or terabytes? einige Byte.

Speicher. T c) Daten welcher Größenordnung kann ein Register aufnehmen: Byte, kilobytes, megabytes, gigabytes or terabytes? einige Byte. R lzieloperanden rich 222 6 MMIXProzessor Verständnisfragen/Aufgaben Allgemein T a) Was ist ein Register? ein Schneller ate kleiner Speicher T b) Wo findet man Register in einem ComputerSystem? im Haupt

Mehr

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer Übung RA, Kapitel 1.5 1. Beantworten Sie bitte folgende Repetitionsfragen 1. Beschreiben Sie in eigenen Worten und mit einer Skizze die Schichtung einer Multilevel Maschine. Folie 5, rechte Seite 2. Welche

Mehr

Technische Informatik 1 - HS 2016

Technische Informatik 1 - HS 2016 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2016 Lösungsvorschläge für Übung 8 Datum: 8. 9. 12. 2016 1 Instruktionsparallelität VLIW Gegeben

Mehr

Unterprogramme mittels Stack (Forts.)

Unterprogramme mittels Stack (Forts.) Unterprogramme mittels Stack (Forts.) gleiches Beispiel mit direkter Übergabe aller Parameter (8-Bit Wert a, 16-Bit Wert b, 16-Bit Ergebnis) durch call by value auf Stack: LDB a * Lade 8-Bit Wert a PSHS

Mehr

1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige

1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige 1.9 Atmega-Programmierung in ASM/LED-Ziffernanzeige 1.9.1 Idee Bei der Programmentwicklung braucht man es ab und zu, dass man sich an bestimmten Stellen des Programms Variablenwerte anzeigen lässt. Bei

Mehr

Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1

Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1 Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1 Einführende Gentle-Programme Dieses Papier soll die Syntax und Semantik (die Schreibweise und Bedeutung) von einfachen Gentle Programmen anhand

Mehr

Die Klasse string Verfasser: Christian Bartl

Die Klasse string Verfasser: Christian Bartl Die Klasse string Verfasser: Index 1. Allgemein... 3 2. Eingabe von Strings... 3 3. Ausgabe von Strings... 4 4. Länge eines Strings... 4 5. Durchlaufen aller Zeichen eines Strings... 4 6. Kopieren von

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr