Grundbegriffe der Informatik Tutorium 5 Tutorium Nr. 16 Philipp Oppermann 2. Dezember 2014 KARLSRUHER INSTITUT FÜR TECHNOLOGIE KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Gliederung 1 Überblick über die MIMA 2 MIMA Befehle 3 MIMA Phasen Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 2/14
Überblick über die MIMA Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 3/14
Speicherbefehle LDC const load constant Akku const LDV adr load value from address Akku M(adr) LDIV adr load value indirect from address Akku M(M(adr)) STV adr set value at address M(adr) Akku STIV adr set value indirect at address M(M(adr)) Akku Ein Pointer p ist ein Speicherwort, das die Adresse eines anderen Speicherworts enthält. p sei der dereferenzierte Pointer, also der Wert bei M(p). Schreibe ein MIMA-Programm, das ausschließlich die Adresse a von p verwendet, so dass: a) p 42 b) p p c) p p Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 4/14
Lösung Ein Pointer p ist ein Speicherwort, das die Adresse eines anderen Speicherworts enthält. p sei der dereferenzierte Pointer, also der Wert bei M(p). Schreibe ein MIMA-Programm, das ausschließlich die Adresse a von p verwendet, so dass: a) p 42 b) p p c) p p a) LDC 42 STIV a b) LDIV a STV a c) LDV a STIV a Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 5/14
einstellige Operationen NOT Invertierung Akku-Bits Akku ~Akku RAR rotate accumulator right Akku x 0 x 23 x 22 x 3 x 2 x 1 Es sei M(a) 0 eine gerade Zahl. Schreibe ein MIMA-Programm, das a) 42 invertiert b) die Zahl an der Adresse a halbiert Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 6/14
Lösung Es sei M(a) 0 eine gerade Zahl. Schreibe ein MIMA-Programm, das a) 42 invertiert b) die Zahl an der Adresse a halbiert a) LDC 42 NOT b) LDV a RAR STV a Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 7/14
Arithmetik Befehle ADD adr Addition Akku Akku + M(adr) AND adr bitweises UND Akku Akku & M(adr) OR adr bitweises ODER Akku Akku M(adr) XOR adr bitweises exklusives ODER Akku Akku ^M(adr) Schreibe ein MIMA-Programm, das die Zahl an Adresse a um 42 erhöht. Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 8/14
Lösung Schreibe ein MIMA-Programm, das die Zahl an Adresse a um 42 erhöht. LDC 42 ADD a STV a Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 9/14
Vergleichsoperationen EQL adr equal? Akku { 1 0 sonst falls Akku = M(adr) Wie sehen die Akku-Bits für Akku = 1 aus? 111 111 (Zweierkomplement) Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 10/14
Sprünge JMP adr jump setze fort mit Befehl in adr JMN adr jump if negative setze fort mit Befehl in adr, falls Akku < 0 Wie kann man einfach überprüfen ob Akku negativ? höchstwertiges Bit ist 1 (da Zweierkomplement) Schreibe ein MIMA-Programm, das die Zahl an Adresse a auf 0 setzt, falls sie positiv ist, und auf 1, falls sie negativ ist. Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 11/14
Lösung Schreibe ein MIMA-Programm, das die Zahl an Adresse a auf 0 setzt, falls sie positiv ist, und auf 1, falls sie negativ ist. LDV a JMN negative LDC 0 JMP end negative: LDC 0 NOT end: STV a Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 12/14
sonstiges... Der Befehl HALT hält die MIMA an. Es werden keine weiteren Befehle mehr ausgeführt. In den Folien der Übung 5 gibt es Assembler Übersetzungen von if/else, while, do while und for. Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 13/14
MIMA Phasen Holphase Decodierphase Ausführungsphase siehe Vorlesungsfolien Philipp Oppermann GBI Tutorium Nr. 16 2. Dezember 2014 14/14