Fachhochschule Ingolstadt                                  Übungsaufgaben Ingenieurinformatik   Fakultät für Maschinenbau ...
3. Aufgabe    Führen Sie folgende Additionen/Subtraktionen im binären Zahlensystem durch. Wandeln Sie also vorder eigentli...
6. Aufgabe   Gegeben sei das folgende Programm für den RUN10000. Der Prozessor beginnt seineProgrammausführung mit der Anw...
8. Aufgabe   Wandeln Sie die folgende Java-Programmsequenz in ein entsprechendes Maschinenprogramm für denRUN10000 um.    ...
11. Aufgabe   Gegeben sei die nachfolgende Klassendefinition:                  class Test {                    public int[...
12. Aufgabe   Entwickeln Sie eine Klasse „Vec3D“, welche zur Speicherung von dreidimensionalen Vektoren genutztwerden kann...
Vec3D (                                )     // Ergänzen sie auch den              {                                      ...
Anhang A: Kurzbeschreibung des Prozessors RUN1000    Soweit in der Aufgabenstellung nicht anders angegeben, besitzt der Pr...
Nächste SlideShare
Wird geladen in …5
×

Übungsaufgaben SS2010

220 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
220
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Übungsaufgaben SS2010

  1. 1. Fachhochschule Ingolstadt Übungsaufgaben Ingenieurinformatik Fakultät für Maschinenbau Prof. Dr. Edwin Naroska Übungsaufgaben für die Klausur Ingenieurinformatik SS 2010Vorbemerkungen Die Aufgaben in diesem Dokument dienen der Vorbereitung auf die Klausur im FachIngenieurinformatik für das Sommersemester 2010. Bitte beachten Sie, dass Anzahl und Format der hiergestellten Aufgaben nicht notwendiger Weise denen der Klausur entsprechen. Beachten Sie bitte zudem, dass in der Klausur keinerlei Hilfsmittel zugelassensind (keine handschriftlichen Unterlagen, keine Bücher, keine Taschenrechner,etc.)!1. Aufgabe Ergänzen Sie die fehlenden Darstellungen der jeweiligen Zahlen. Binäre Zahlen sind im 2er-Komplementformat (9 Bitstellen, einschließlich „Vorzeichen“) anzugeben! Binär Dezimal 010110111 128 111111111 -122. Aufgabe Bestimmen Sie für die folgenden 2er-Komplementformate mit „n“ Stellen (einschließlich „Vorzeichen“)den darstellbaren Zahlenbereich. Geben Sie den Zahlenbereich in dezimaler und (binärer) 2er-Komplementdarstellung an. Bitstellen „n“ Kleinste darstellbare Zahl Größte darstellbare Zahl (Dezimal und 2er- (Dezimal und 2er- Komplement) Komplement) 3 5
  2. 2. 3. Aufgabe Führen Sie folgende Additionen/Subtraktionen im binären Zahlensystem durch. Wandeln Sie also vorder eigentlichen Addition/Subtraktion die Dezimalzahlen in entsprechende Binärzahlen (gegebenenfalls2er-Komplementdarstellung) um. Die Binärzahlen sollen hierbei 8 Stellen besitzen. Operation Rechnung im (vorzeichenbehafteten) Binärformat -128 + 1 127 - 1 -124 - 44. Aufgabe Gegeben sei ein Prozessor ohne Pipelining, der seine Instruktionen in 5 Phasen abarbeitet und mit 1,0GHz (1 GHz = 109 Hz) getaktet wird. a. Wie viele Instruktionen verarbeitet der Prozessor pro Sekunde, wenn er für jede Phase genau einen Taktzyklus benötigt? Jetzt soll der Prozessor seine Befehle im Pipeline-Betrieb verarbeiten (bei gleicher Taktfrequenz). b. Wie viele Instruktionen kann der Prozessor jetzt pro Sekunde im günstigsten Fall abarbeiten? c. Wie viele Instruktionen pro Sekunde (bei gleicher Taktfrequenz) verarbeitet der Prozessor, wenn 20% der verarbeiteten Instruktionen Sprünge sind, die alle einen Pipeline-Stall von 2 Takten verursachen? d. Wie viele Instruktionen pro Sekunde verarbeitet der Prozessor, wenn 50% der verarbeiteten Sprünge durch eine Sprungvorhersage korrekt vorhergesagt wurden? Bei einer korrekten Vorhersage gibt es keine Pipeline-Stalls, während falsche vorhergesagte Sprünge 2 Pipeline- Stall-Takte verursachen.5. Aufgabe Warum werden Daten- und Programm-Caches bei Prozessoren eingesetzt? Welches Problem wirddurch die Caches gemildert?
  3. 3. 6. Aufgabe Gegeben sei das folgende Programm für den RUN10000. Der Prozessor beginnt seineProgrammausführung mit der Anweisung 0. 0 addi r1, r0, 0 1 addi r2, r0, 2 2 addi r3, r0, 3 3 add r4, r0, r0 4 add r1, r1, r2 5 add r2, r2, r2 6 sub r2, r0, r2 7 addi r4, r4, 1 8 ble r4, r3, -4 9 halt Welche Werte sind in den Register r1, bis r4 gespeichert, wenn der Prozessor den halt-Befehlt erreichthat? Wie oft wird die Sprunganweisung „ble r4, r3, -4“ (Anweisung Nr. 8) verarbeitet? Wie oft wird dieAnweisung Nr. 1 verarbeitet?7. Aufgabe Gegeben sei ein System mit dem Prozessor RUN10000, welcher ein Programm abarbeiten soll. DerDatenspeicher habe vor Beginn der Programmabarbeitung den nachfolgenden Inhalt (alle Werte außerhalbdes Adressbereichs 199 bis 204 seien 0): Adresse Speicherinhalt Speicherinhalt Vorher Nachher … 0 199 0 200 10 201 20 202 30 203 40 204 50 … 0 Der Prozessor führe nun ein Programm beginnend mit der Anweisung an Adresse 0 aus: 0 addi r1, r0, 0 1 addi r2, r0, 5 2 add r3, r0, r0 3 load r4, 200(r1) 4 add r3, r3, r4 5 store r3, 199(r1) 6 addi r1, r1, 1 7 ble r1, r2, -4 8 halt Welche Werte stehen in den Register r1, r2, r3 und r4, wenn der Prozessor die „halt“-Anweisungerreicht hat? Welche Werte stehen in den Speicherstellen 199 bis 204?
  4. 4. 8. Aufgabe Wandeln Sie die folgende Java-Programmsequenz in ein entsprechendes Maschinenprogramm für denRUN10000 um. int i = 1; int sum = 0; do { if (i < 100) sum += 2*i; else sum += i; } while (++i < 1000); Speichern Sie in dem Programm die Variable „i“ im Register r1 und die Variable „sum“ im Register r2.Diese Variablen müssen nicht zusätzlich im Speicher abgelegt werden.9. Aufgabe Welche Ausgabe erzeugt die folgende Java-Programmsequenz auf dem Bildschirm: int i = 1; int sum = 0; for ( ; i < 10; i += i) { sum += i; i += 1; } System.out.println(sum + " " + i); Wie oft wird der Rumpf der „For“-Schleife in dieser Programmsequenz ausgeführt?10. Aufgabe Erzeugen Sie eine Java-Programmsequenz, die das Ergebnis der mathematische Formelberechnet. Verwenden Sie NICHT die mathematische Library-Funktion „Math.Pow“!
  5. 5. 11. Aufgabe Gegeben sei die nachfolgende Klassendefinition: class Test { public int[] value = null; public Test(int i) { this.value = new int[i]; for (int j = 0; j < i; j++) this.value[j] = i; } public int calc(Test a, Test b) { int sum = 0; for (int i = 0; i < a.value.length; i++) sum += a.value[i]; for (int i = 0; i < b.value.length; i++) sum += b.value[i]; return sum; } } Basierend auf diesem Klassen-Code wurde nun ein Hauptprogramm erstellt, welches die folgendeProgrammsequenz enthält: Test x = new Test (2); Test y = new Test (3); System.out.println(x.calc(x, y)); System.out.println(y.calc(y, x)); Welche Ausgabe erzeugt diese Programmsequenz auf dem Bildschirm? Was passiert, wenn man dieSequenz etwas abändert (siehe unten) und laufen lässt? Test x = new Test (2); Test y = new Test (4); Int[] v = new int[] { 1, 1, 1, 1, 1 }; System.out.println(x.calc(x, y)); y.value = v; System.out.println(x.calc(x, y));
  6. 6. 12. Aufgabe Entwickeln Sie eine Klasse „Vec3D“, welche zur Speicherung von dreidimensionalen Vektoren genutztwerden kann. Erzeugen Sie zunächst passende Member, um die drei Koordinatenwerte aufnehmen zu können. DieKoordinatenwerte sollen hierbei als Fließkommazahlen abgelegt werden und öffentlich zugänglich sein: class Vec3D { // Member bitte // hier einfügen … } Erstellen Sie als nächstes eine Methode „length“, die von jedem aufgerufen werden kann (öffentlichzugänglich) und keine Aufrufparameter übergeben bekommt. Die Methode soll die Länge des Vektors alsRückgabewert zurück geben. Bitte tragen Sie auch den Funktionskopf ein! { // Tragen Sie auch den // Funktionskopf ein! } Erstellen Sie eine öffentlich zugängliche Methode „add“, die als Parameter einen Objekt vom Typ„Vec3D“ übergeben bekommt und diesen Vektoren zum aktuellen Vektor hinzuaddiert! Hinweis: ZweiVektoren werden addiert, indem man die entsprechenden Koordinatenwerte summiert. { // Ergänzen Sie auch den // Funktionskopf ein! } Erstellen Sie einen Konstruktor, der die Initialisierungswerte für die drei Koordinaten als Parameterübergeben bekommt. Vec3D( ) { // Aufrufparameter Definieren } Erstellen Sie als nächstes eine Konstruktor, der zwei „Vec3D“-Objekte als Parameter übergebenbekommt und den aktuellen Vektor mit der Summe aus den beiden Parametervektoren initialisiert. NutzenSie dazu die oben definierte Methode „add“.
  7. 7. Vec3D ( ) // Ergänzen sie auch den { // Methodenkopf! } Mit Hilfe der eben erstellten Klasse werde nun in einem Hauptprogramm der nachfolgendeProgrammcode ausgeführt. Was gibt die Routine auf dem Bildschirm aus? Hinweis: Sie brauchen denausgegebenen Zahlenwert nicht auszurechnen (die Angabe der entsprechenden Formel reicht aus)! public static void test () { Vec3D a = new Vec3D(1, 2, 3); Vec3D b = new Vec3D(3, 2, 1); Vec3D c = new Vec3D(a, b); a.add(b); a.add(c); System.out.println(a.length()); }
  8. 8. Anhang A: Kurzbeschreibung des Prozessors RUN1000 Soweit in der Aufgabenstellung nicht anders angegeben, besitzt der Prozessor RUN10000 diefolgenden Eigenschaften: Der Prozessor besitzt 32 Register r0, r1, … r31. Das Register r0 ist hierbei immer 0, das Register r31 ist der Programcounter PC. Alle Register sind 32 Bit groß. Soweit nicht anders angegeben führt der Prozessor alle arithmetischen Berechnungen (auch die Berechnungen zur Ermittlung einer Speicheradresse) vorzeichenbehaftet durch. Wenn nicht anders angegeben, besitzt der Prozessor keinen Branch-Delay-Slot. Wenn nicht anders angegeben, nutzt der Prozessor kein Pipelining. Wenn nicht anders angegeben, sind in Maschinenprogrammen alle Zahlenkonstanten in Dezimalnotation angegeben. Im Folgenden sind die verfügbaren Befehle des RUN10000 aufgelistet. „ra“, „rb“ und „rc“ stehen für beliebige Register r0 bis r31. „offset“ und „imm“ stehen für Zahlenkonstanten. Befehl Bezeichnung Beschreibung load ra, offset(rb) Lade indirekt mit Lade das Register ra mit dem Inhalt der offset Hauptspeichers von der Adresse (rb + offset) store ra, offset(rb) Speicher indirekt Speichere den Inhalt des Register ra in mit offset den Hauptspeicher an die Adresse (rb + offset) add ra, rb, rc Addiere ra = rb + rc sub ra, rb, rc Subtrahiere ra = rb – rc addi ra, rb, imm Addiere mit ra = rb + imm Immediate subi ra, rb, imm Subtrahiere mit ra = rb – imm Immediate and ra, rb, rc Bitweise ra = rb & rc Verundung rb und rc werden bitweise und-verknüpft or ra, rb, rc Bitweise ra = rb | rc Veroderung rb und rc werden bitweise oder- verknüpft bne ra, rb, offset Branch not equal Springe nach PC + offset, falls ra != rb beq ra, rb, offset Branch equal Springe nach PC + offset, falls ra == rb bgt ra, rb, offset Branch greater Springe nach PC + offset, falls ra > rb than bge ra, rb, offset Branch greater Springe nach PC + offset, falls ra >= rb equal blt ra, rb, offset Branch less than Springe nach PC + offset, falls ra < rb ble ra, rb, offset Branch less Springe nach PC + offset, falls ra <= rb equal

×