Rechnerarchitektur Teil 2

Ähnliche Dokumente
Syntax von LOOP-Programmen

Ausdrücke (1) Grundlegende Eigenschaften

Syntax der Sprache PASCAL

4.Grundsätzliche Programmentwicklungsmethoden

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

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

Berechenbarkeit und Komplexität Vorlesung 11

Brückenkurs Programmieren

Informatik 1. Prüfung im Wintersemester 1997/98

Mächtigkeit von WHILE-Programmen

Technische Informatik I Übung 3: Assembler

Informatik I Übung, Woche 40

Technische Informatik I - HS 18

Assembler Kontrollstrukturen

Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Bash-Skripting Linux-Kurs der Unix-AG

Kontrollstrukturen (1)

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

Zwischencodeerzeugung Compiler II

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Angewandte Mathematik und Programmierung

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

5. Übung - Kanalkodierung/Programmierung

Sprungbefehle und Kontroll-Strukturen

Einführung in die Programmierung mit VBA

1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language)

Arithmetik in der tcsh

Programmieren 1 C Überblick

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

3.1 Reservierte Wörter

10 Wiederholungsanweisungen

4.2 Programmiersprache C

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Informatik I Übung, Woche 40

Modul 122 VBA Scribt.docx

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

(Prüfungs-)Aufgaben zur Berechenbarkeits- und Komplexitätstheorie

Grundlagen wissenschaftlichen Arbeitens (ws /05)

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006

Grundlagen der Theoretischen Informatik: Übung 10

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Imperative Programmierung in Java: Kontrollfluß II

Wiederholungen / Schleifen

LOOP-Programme: Syntaktische Komponenten

Computersysteme. Stacks Anwendung in der Assembler-Programmierung

Assembler Integer-Arithmetik

1 Potenzen und Polynome

1 Rechnerstrukturen 1: Der Sehr Einfache Computer

Mathematische Computer-Software

Schleifenanweisungen

MIX-Befehle - Aufbau

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

1 pulsierender Speicher

VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

JAVA-Datentypen und deren Wertebereich

Programmieren I. Kapitel 5. Kontrollfluss

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

TI-Basic. Programme und Funktionen

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

LOOP-Programme: Syntaktische Komponenten

Control Beispiel. Control wird als kombinatorische Schaltung realisiert. Hierzu die Wahrheitstabelle: Control

2. Imperative Programmierung und Berechenbarkeit - Registermaschinen -

Dr. Monika Meiler. Inhalt

Einführung in die Programmierung II. 5. Zeiger

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

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Modellierung und Programmierung 1

Vorkurs Mathematik für Informatiker. 1 Potenzen. Michael Bader, Thomas Huckle, Stefan Zimmer Oktober Kap.

Gegenüberstellung von Assembler- und C-Programmierung

2.5 Programmstrukturen Entscheidung / Alternative

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

GTI. Hannes Diener. 18. Juni. ENC B-0123,

4 Schleifen -= Entstanden unter Excel 2003 =-

1 Funktionale vs. Imperative Programmierung

Thomas Binzinger. Jetzt lerne ich. Delphi. Markt+Technik Verlag

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Zeiger (engl. Pointer)

Eine praktische Einführung in die Programmierung mit der Programmiersprache C

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Theorie der Informatik

Transkript:

Rechnerarchitektur Teil 2 Fähigkeiten der Registermaschine und Sprachübersetzung Dipl.-Inform. Meiko Lösch 2006-05-12

Inhalt 1 Rechenfähigkeit Zuweisungen Rechnen Relationen 2 Programmierfähigkeit Schleifen Unterprogramme 3 Sprachübersetzung Manuelle Übersetzung Automatisierte Übersetzung

Zuweisungen Arten von Zuweisungen Zurücksetzen auf Null Setzen auf eine Konstante Variablenzuweisung

Variablen auf 0 setzen Notation und Vorgaben x:=0; x liegt an Speicherstelle 1 logische Struktur while (x<>0) Do Begin Dec(x); End; Implementierung 1 TST 1 2 JMP 4 3 HLT 4 DEC 1 5 JMP 1

Variablen auf Konstante setzen Notation und Vorgaben x:=k; x liegt an Speicherstelle 1 k ist eine (kleine) Konstante logische Struktur x:=0; Inc(x); Inc(x); [...] Inc(x); Implementierung für k=3 1 TST 1 2 JMP 4 3 JMP 6 4 DEC 1 5 JMP 1 6 INC 1 7 INC 1 8 INC 1

Vereinfachte Notation BONSAI-Assembler 1 TST 1 2 JMP 4 3 JMP 6 4 DEC 1 5 JMP 1 6 INC x 7 INC x 8 INC x Vereinfachung 1 TST x JMP +2 JMP Lx0 DEC x JMP -4 Lx0: INC x INC x INC x

Vereinfachte Notation Vereinfachung 1 TST x JMP +2 JMP Lx0 DEC x JMP -4 Lx0: INC x INC x INC x Vereinfachung 2 x:=0; INC x INC x INC x

Zuweisung von Variablen Notation und Vorgaben x:=y; x liegt an Speicherstelle 1 y liegt an Speicherstelle 2 logische Struktur x:=0; x:=y, h:=y, y:=0; y:=h, h:=0; Implementierung x:=0; JMP -6 h:=0; TST h TST y JMP +2 JMP +2 HLT JMP +5 DEC h DEC y INC y INC x JMP -5 INC h

Rechnen Rechenoperationen Addition Subtraktion Multiplikation Division Potenzen Wurzeln

Addition Notation und Vorgaben x:=x+k x liegt an Speicherstelle 1 k ist eine Konstante Implementierung für k=3 INC x INC x INC x logische Struktur INC x INC x [...] INC x

Addition Notation x:=y+z logische Struktur x:=y; while (z>0) Do Begin Dec(z); Inc(x); End; Implementierung x:=y; TST z JMP +2 HLT DEC z INC x JMP -5

Subtraktion Notation und Vorgaben x:=y-z x y = 0 für y > x logische Struktur x:=y; while (x<>0) and (z<>0) Do Begin Dec(x); Dec(z); End; Implementierung x:=y; TST x JMP +2 HLT TST z JMP +2 HLT DEC x DEC z JMP -8

Multiplikation Notation x:=y*z logische Struktur x:=0; while (y<>0) Do Begin x:=x+z; Dec(y); End; Problem x:=x+z; zerstört den Inhalt von z. Lösung Wert von z in Hilfsvariable kopieren.

Ganzzahl-Division Notation x:=y DIV z logische Struktur while (y<>0) Do Begin y:=y-z; if y<>0 Then Inc(x); End; Problem Das Programm liefert falsche Werte, wenn die Division aufgeht. Lässt man die Abfrage y<>0 weg, ergeben sich falsche Werte, wenn ein Rest entsteht. Nachbessern!

Ausblick Weitere Möglichkeiten Berechnungen ohne Nebeneffekte weitere Berechnungen Division mit Rest: Rest zwischenspeichern. Potenzen: wiederholt multiplizieren Wurzeln: durch Schleife und Vergleich herantasten

Relationen einfache Relationen Gleich Größer Kleiner Idee xry (x 1)R(y 1) für R {<, >, =} 0 = 0 0 < i i > 0 für i 0, i N 0

Vergleiche logische Struktur while (x<>0) and (y<>0) Do Begin Dec(x); Dec(y); End; if (x=0) AND (y=0) Then { = } if (x=0) AND (y<>0) Then { < } if (x<>0) AND (y=0) Then { > } Implementierung TST x JMP +4 TST y JMP less JMP equal TST y JMP +2 JMP greater DEC x DEC y JMP -10

Schleifen Schleifentypen While-Schleife Repeat-Until-Schleife For-Schleife

While-Schleife While Bedingung Do... Start: if NOT <Bedingung> Then goto Ende {Schleifenrumpf} goto Start Ende: Implementierung Start: b:=bedingung; TST b JMP +2 JMP Ende {Rumpf} JMP Start

Repeat-Until-Schleife Repeat... Until <Bedingung> Start: {Schleifenrumpf} if NOT <Bedingung> Then goto Start Implementierung Start: {Rumpf} b:=bedingung; TST b JMP +2 JMP Start

For-Schleife For i:=startwert To Endwert i:=startwert; Start: {Schleifenrumpf} Inc(i) if i<=endwert Then goto Start

Unterprogramme Arten von Unterprogrammen Unterprogramm als Makro bereits verwendet! echtes Unterprogramm Prozedur/Funktion kann das die Hardware?

Unterprogramme Makros Schablone komplexere Befehle Prozeduren/Funktionen Sprung an eine feste Adresse Übergabe von Parametern/Rückgabewerten Rücksprung an aufrufende Stelle

Unterprogramme Prozeduren/Funktionen Sprung an eine feste Adresse JMP Übergabe von Parametern/Rückgabewerten Position festlegen Rücksprung an aufrufende Stelle Rücksprungadresse kann nicht gespeichert werden

Unterprogramme Prozeduren/Funktionen Rücksprung an aufrufende Stelle Rücksprungadresse kann nicht gespeichert werden Folgerung Prozedur- und Funktionsaufrufe werden von der BONSAI-Hardware nicht unterstützt. Aber Die Mächtigkeit wird davon nicht beeinflusst, der entsprechende Code kann jeweils als Makro eingefügt werden.

Manuelle Übersetzung Aufgabe Übersetzen Sie das folgende Programm in BONSAI-Assembler und protokollieren Sie Ihr Vorgehen. Pascal PROGRAM Test1; VAR i:word; BEGIN Inc(i); Dec(i); END. Assembler 1 INC 1 2 DEC 1 3 HLT

Manuelle Übersetzung Pascal BEGIN Inc(i); Dec(i); END. Assembler 1 INC 1 2 DEC 1 3 HLT Vorgehen Befehle durch Pendant in Assembler ersetzen Zeilen durchnummerieren Adressen Variablen durchnummerieren Adressen Variablennamen durch Adresse ersetzen

Manuelle Übersetzung Pascal BEGIN Start: Inc(i); Dec(i); Goto Start; END. Assembler 1 INC 1 2 DEC 1 3 JMP 1 4 HLT Vorgehen Befehle durch Pendant in Assembler ersetzen Zeilen durchnummerieren Adressen Sprungmarken durch Adressen ersetzen Variablen durchnummerieren Adressen Variablennamen durch Adressen ersetzen

Manuelle Übersetzung Komplexere Befehle Schablonen/Makros müssen eingesetzt werden relative Sprünge machen die Makros ortsunabhängig Probleme Verschachtelung von Makros Namensgebung für Hilfsvariablen

Automatisierte Übersetzung Offene Fragen 1 Ausgangssprache 2 Zielsprache 3 notwendige Schritte

Ausgangssprache RePas reduziertes Pascal Pascal (Delphi) bereits bekannt Sprachelemente so wenig wie möglich so viel wie nötig möglichst exakte Umsetzung von BONSAI-Assemlber

Ausgangssprache Ergebnis Inc(<Var>); Dec(<Var>); Goto <Label>; If (<Var>=0) Then Goto <Label1> Else Goto <Label2>; Begin [...] End. Program <Name> Label <Label1>,<Label2>,[...]; Var <Var1>:Word,<Var2>:Word,...;

Zielsprache Möglichkeiten 1 BONSAI-Maschinensprache realistisch 2 BONSAI-Assembler unabhängig vom erweiterten Modus in BONSAI Compiler existiert bereits ;-)

Der Compiler Aufgabe Unter BONSAI\BONCOMP\ finden Sie einen Compiler für BONSAI. Dieser Teilt sich in drei Programme auf: scanner.exe, parser.exe und codegen.exe. 1 Führen Sie diese drei Programme in dieser Reihenfolge aus und wenden Sie sie auf ADD5 an. 2 Beobachten Sie die Ausgaben, die die Programme erzeugen. (*.TOK, *.PTK, *.BON) 3 Beschreiben Sie, was die Programme jeweils machen. Überprüfen Sie Ihre Theorie, indem Sie T1.PAS, T2.PAS und ggf. auch andere Programme übersetzen.

Der Compiler Scanner PROGRAM_S PROGRAM Bezeichner_S ADDITION5 SEMIKOLON_S ; LABEL_S LABEL Bezeichner_S A1 KOMMA_S, [...] VAR_S VAR Bezeichner_S R1 Parser PROGRAM_S PROGRAM ProgName_S ADDITION5 SEMIKOLON_S ; LABEL_S LABEL LabelName_S A1 KOMMA_S, [...] VAR_S VAR VarName_S R1

Der Compiler Scanner erkennen verbotener Zeichen erkennen von Zeichenfolgen Parser Zeichenfolgen in ihrem Kontext sehen Struktur überprüfen Symboltabelle aufstellen Codegenerator Befehle übersetzen Symboltabelle aufstellen und Adressen zuweisen

Ausblick Weitere Möglichkeiten mehr Befehle unterstützen Zuweisungen Grundrechenarten mehr Konstrukte unterstützen Schleifen weitere Relationen außer =0...

Quellen Quellen http://hsg.region-kl.de/faecher/inf/material/bonsai/ BONSAI-Dokumentation von Herrn Merkert.