Universität Dortmund ANSI-C Compiler für die PIC18-Architektur

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

der Universität Oldenburg
Vorlesung Compilertechnik Sommersemester 2009
Vorlesung Compilertechnik Sommersemester 2009 Zielcodeerzeugung M. Schölzel.
Vorlesung Compilertechnik Sommersemester 2008
Vorlesung Compilertechnik Sommersemester 2009 Optimierung M. Schölzel.
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Technische Universität Dortmund
Technische Universität Dortmund
2.3 Register-Transfer-Strukturen
Grenzen endlicher Automaten
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
1 Energiebewusste Compilierung für digitale Signalprozessoren Markus Lorenz Peter Marwedel Universität Dortmund Lehrstuhl Informatik XII Projekt Prozessorarchitekturen.
0 Energieeffiziente Compilierung für Digitale Signalprozessoren Markus Lorenz Peter Marwedel Rainer Leupers Projekt Prozessorarchitekturen und Compilertechniken.
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Gliederung des Inhalts
Java: Grundlagen der Sprache
FOR Anweisung.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
OpenMP Präsentation im Rahmen des Seminars
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 4 Claudio Moraga; Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Vorlesung 2 Rechnerarchitektur Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 3: Verschiedenes Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 5: Interrupts Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Rechnerarchitektur Vorlesung 2 Peter B. Ladkin
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Der C-Präprozessor EDV1 - 04Präprozessor.
DVG Einführung in Java1 Einführung in JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
1 Vorlesung 3 Verschiedenes Peter B. Ladkin
2.3 Register-Transfer-Strukturen
Einführung in die Programmiersprache C 1
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Multiplikation großer Zahlen mit Standard-FFT
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Programmiersprache C 4
Informatik 1 Übung 4.
CGI (Common Gateway Interface)
© Gabriele Sowada © Gabriele Sowada 2 Emulation Emulation der Siemens 2002 auf dem PC unter Windows von Volker Dahrendorf Für alle.
Informatik Grundlagen, WS04, Seminar 7
Programmieren in Assembler
Grundlagen der Übersetzung und Optimierung von Programmiersprachen
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
Generierung von effizientem C-Code aus UML2-Strukturdiagrammen
1 Bauhaus-Universität Weimar ArchitekturProgrammierung Generative Entwurfsmethoden Processing Grundlagen Professur Informatik in der Architektur.
Praktische Informatik 1
Compiler für Eingebettete Systeme [CS7506]
Schnuck Schnack Schnick Stein-Schere-Papier Projekt INGOLSTADT.
 Präsentation transkript:

Universität Dortmund ANSI-C Compiler für die PIC18-Architektur Betreuer Jens Wagner Lars Wehmeyer Teilnehmer Detlev Bartsch Pedram Hadjian Torsten Denno Nico Karnatz Andreas Klapschus André Kernchen Marcus Ladwig Michael Patzer Matthias Reck Christoph Schlagbaum Daniel Smolinski Thorsten Wilmer Teilanforderungen an die PG: Entwicklung einer Software, die Programme in der Hochspache ANSI-C in die Maschinensprache des verwendeten Mikrocontrollers überführt Hierzu wurden der Projektgruppe mit freundlicher Genehmigung des ICD (Informatik Centrum Dortmund) das Compiler-Frontend LANCE und die Backend-datenstruktur LLIR zur nicht-kommerziellen Verwendung zur Verfügung gestellt Realisierung des Compilers: void main () { int A[10]; int i,j,temp; int n=10; for (i=n-2; i>=0; i--) {for (j=0; j<=i;j++) {if (A[j]>A[j+1]) {temp = A[j]; A[j] = A[j+1]; A[j+1]=temp; } Eingabe eines ANSI-C Programmes Beispiel: Bubble Sort ... /* $ {if (A[j]>A[j+1])$ */ t10 = (char *)A_3; t9 = j_6 * 2; t8 = t10 + t9; t11 = (int *)t8; t12 = j_6 + 1; t15 = (char *)A_3; t14 = t12 * 2; t13 = t15 + t14; t16 = (int *)t13; t17 = *t11 > *t16; t36 = !t17; if (t36) goto LL5; Ausgabe in 3-Adress Code 90 IR-Statements Erzeugung einer assemblernahen Zwischenrepräsentation durch das Compiler-Frontend LANCE Visualisierung der Datenflussbäume mittels xvcg Durchführung architekturunspezifischer Optimierungen Ansi-C Frontend LANCE ( ICD ) ... # MULTIPLICATION acc: cs_MULT(acc,cs_INTCONST) { $cost[0].cost=2+$cost[2].cost;} = { $action[2](); EmitMULLW(CS_EXPVAL($3)); EmitMOVF(NewPR(PHREG_PRODL),0,0); }; # ADDITION (ACC,INT) acc: cs_PLUS(acc,cs_INTCONST) { $cost[0].cost=1+$cost[2].cost;} EmitADDLW(CS_EXPVAL($3)); Erstellung einer architektur- Spezifischen Beschreibung *** LANCE V2.0 - IR optimization script *** * Running SSA * Running constant folding * Running constant propagation * Running reassociation * Running symbol table cleanup * Running jump optimization * Running loop invariant code motion * Running induction variable elimination * Running global common subexpression elimination * Running dead code elimination * Running copy propagation * Running local common subexpression elimination *** Optimization script done *** Erzeugung eines Codeselektors anhand der Baumgrammatik Mittels OLIVE . . . Überdeckung der Datenflussbäume durch Befehlsmuster . . . Einsparung von 47 IR-Statements ! Low-level intermediate Representation LLIR3 ( ICD ) PICBACK, basierend auf der Erzeugung einer Assembler-Datei durch das von der Projekt-Gruppe erstellte Compiler-Backend PICBACK ... _main_LL6: LFSR 0,v_5 MOVFF INDF0,v_4 _main_LL4: MOVF v_2,0,0 MULLW .4 MOVF PRODL,0,0 MOVWF v_6,0 MOVF v_4,0,0 ADDLW .4 LFSR 0,v_6 ADDWF FSR0L,1,0 CLRF WREG,0 ADDWFC FSR0H,1,0 ... :020000040000FA :02000000FFD02F :02000800FFD027 :02001800FFD017 :0402000083EF04F094 :02020800BBD168 :08021800D59E026ED8CF03F061 :10022000F2A4F5EF08F0F2948C72 E9CF04F0EACF73 :1002300005F0E1CF06F0E2CF07F003EE4AF0005000 :10024000E844E926000EEA22EECFE1FFEFCFE2FF1D :1002500002C0E6FF03C0E6FFE0CFE6FFF3CFE6FF14 Durchführung einer Registerallokation durch Graphfärbealgorithmen ... _main_LL6: LFSR 0,v_5 MOVFF INDF0,v_4 _main_LL4: MOVF v_2,0,0 MULLW .4 MOVF PRODL,0,0 MOVWF v_6,0 MOVF v_4,0,0 ADDLW .4 LFSR 0,v_6 ADDWF FSR0L,1,0 CLRF WREG,0 ADDWFC FSR0H,1,0 META-Assemblercode Im Beispiel sind Register noch virtuell Reduktion der Anzahl der Register von 10 virtuellen auf 7 physikalische MPLab erzeugte Hex-Datei, die auf den Prozessor übertragen wird Lehrstuhl 12 ls12-www.cs.uni-dortmund.de/rock PG ROCK 2002/2003 © PG RoCK 2003 André Kernchen