Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

... _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.

Ähnliche Präsentationen


Präsentation zum Thema: "... _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."—  Präsentation transkript:

1 ... _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... Universität Dortmund Lehrstuhl 12 ls12-www.cs.uni-dortmund.de/rock PG ROCK 2002/2003 PG ROCK 2002/2003 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: 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 void main () { int A[10]; int i,j,temp; int n=10; for (i=n-2; i>=0; i--) {for (j=0; j A[j+1]) {temp = A[j]; A[j] = A[j+1]; A[j+1]=temp; } Eingabe eines ANSI-C Programmes Beispiel: Bubble Sort Erzeugung einer assemblernahen Zwischenrepräsentation durch das Compiler-Frontend Compiler-FrontendLANCE... /* $ {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 VisualisierungderDatenflussbäume mittels xvcg Durchführung architekturunspezifischer Optimierungen... # 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;} = { $action[2](); EmitADDLW(CS_EXPVAL($3)); };... Erstellung einer architektur- Spezifischen Beschreibung Ansi-C Frontend LANCE ( ICD ) Erzeugung eines Codeselektors anhand der Baumgrammatik Mittels OLIVE OLIVE Erzeugung einer Assembler-Datei durch das von der Projekt-Gruppe erstellte Compiler-BackendPICBACK... _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 Durchführung einer Registerallokation durch Graphfärbealgorithmen... *** 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 * Running symbol table cleanup *** Optimization script done *** Reduktion der Anzahl der Register von 10 virtuellen auf 7 physikalische Einsparung von 47 IR-Statements ! für die PIC18-Architektur ANSI-C Compiler Überdeckung der Datenflussbäume durch Befehlsmuster... : FA : FFD02F : FFD027 : FFD017 : EF04F094 : BBD168 : D59E026ED8CF03F061 : F2A4F5EF08F0F2948C72 E9CF04F0EACF73 : F0E1CF06F0E2CF07F0 03EE4AF : E844E926000EEA22EECF E1FFEFCFE2FF1D : C0E6FF03C0E6FFE0CF E6FFF3CFE6FF14... MPLab erzeugte Hex-Datei, die auf den Prozessor übertragen wird Low-level intermediate Representation LLIR3 ( ICD ) PICBACK, basierend auf der © PG RoCK 2003 André Kernchen


Herunterladen ppt "... _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."

Ähnliche Präsentationen


Google-Anzeigen