Pensumoversikt - kodegenerering. Maskinen det oversettes til. Kodegenerering del 2: tilleggsnotat, INF5110 v2006

Like dokumenter
Kodegenerering, del 2: Resten av Kap. 8 pluss tilleggsnotat (fra kap. 9 i ASU ) INF5110 V2007

Mer kodegenerering: Tilleggsnotat fra AHU Om Javas Byte-kode INF april 2009

Mer kodegenerering: Tilleggsnotat fra AHU. INF mai Stein Krogdahl,

INF mai 2014 Stein Krogdahl, Ifi, UiO

Dette er foiler til: 1. Tilleggsnotat fra bok av Aho, Sethi og Ullman Notatet legges ut på undervisnings-planen. Beklager dårlig kopi!

MED SVARFORSLAG UNIVERSITETET I OSLO

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015

Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO

Løsningsforslag til avsluttende eksamen i HUMIT1750 høsten 2003.

Kap. 8 del 1 kodegenerering INF5110 Vår2007

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 13. desember HINDA / 98HINDB / 98HINEA ( 2DA / 2DB / 2EA ) TID:

Løsningsforslag til Obligatorisk oppgave 2

INF-5110 Oppgaver kodegenerering etc. INF-5110, vår 2011

Kap. 8 del 1 kodegenerering INF april, 2008

Brøkregning og likninger med teskje

Integrasjon Skoleprosjekt MAT4010

Læringsmål og pensum. Forberdring vha preallokering. Oversikt

Avsluttende om kodegenerering: Tilleggsnotat fra AHU Samt: En oversikt over bruk av Javas Byte-kode

Matematikk Øvingsoppgaver i numerikk leksjon 8 Numerisk integrasjon

5: Algebra. Oppgaver Innhold Dato

M2, vår 2008 Funksjonslære Integrasjon

Kapittel 8 TUTORIALS-CASES

Mer øving til kapittel 3

LØSNINGSFORSLAG(Sensor) I TMA4140 og MA0302

Temahefte nr. 1. Hvordan du regner med hele tall

Kap. 8 kodegenerering INF april, 2009

Oversikt II. Innhold. INF1000 (Uke 12) Oversikt I. Sortering. Lære å lage proff programvare ved å lage. en generell klasse for sortering

Stoff som i boka står i kap 4, men som er. 10. Februar Ifi, UiO

Årsprøve trinn Del 2

UNIVERSITETET I OSLO

Innhold. INF1000 (Uke 12) Sortering og eksamensoppgaver. Oversikt II. Oversikt I. Om sortering. Litt om dokumentasjon av kode. Deler av eksamen H03

ALTERNATIV GRUNNBOK BOKMÅL

Løsningsforslag til obligatorisk oppgave i ECON 2130

Eneboerspillet. Håvard Johnsbråten

INF Noen oppgaver til kap. 8

Løsningsforslag til ukeoppgaver i INF3110/4110

INF og 13. april, Stein Krogdahl, Ifi UiO

S1 kapittel 6 Derivasjon Løsninger til oppgavene i boka

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

Øvingsforelesning 9: Minimale spenntrær. Daniel Solberg

Kap.4 del I Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO

1 Geometri KATEGORI Vinkelsummen i mangekanter. 1.2 Vinkler i formlike figurer

Sensorveiledning Oppgaveverksted 4, høst 2013 (basert på eksamen vår 2011)

LEDDVIS INTEGRASJON OG DERIVASJON AV POTENSREKKER:

Faktorisering. 1 Hva er faktorisering? 2 Hvorfor skal vi faktorisere? Per G. Østerlie Senter for IKT i utdanningen 11.

Kap. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO

Læringsmål og pensum. Funksjoner hittil (1) Oversikt. Læringsmål Anonyme og rekursive funksjoner Funksjoner som inn-argumenter Subfunksjoner

Leger. A. Om din stilling. Klinisk stilling: Turnuslege Assistentlege Overlege. B. Om din erfaring med bruk av datamaskin. 1 Eier du en datamaskin?

INF5110 V2013 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker

Løsningsforslag til øving 5 TFE4105 Digitalteknikk og Datamaskiner Høsten 2006

Matematikk Øvingsoppgaver i numerikk leksjon 9 Numerisk integrasjon

Del 2. Alle oppgaver føres inn på eget ark. Vis tydelig hvordan du har kommet frem til svaret. Oppgave 2

LEDDVIS INTEGRASJON OG DERIVASJON AV POTENSREKKER: a n x n. R > 0, med summen s(x). Da gjelder: a n n + 1 xn+1 for hver x < R.

1 dx cos 1 x =, 1 x 2 sammen med kjerneregelen for derivasjon. For å forenkle utregningen lar vi u = Vi regner først ut den deriverte til u,

2 Symboler i matematikken

Stoff som i boka står i kap 4, men som er

Bioberegninger - notat 3: Anvendelser av Newton s metode

INF og 27. april, 2010 Kap. 8 kodegenerering. Stein Krogdahl, Ifi UiO

INF Forelesning 10

FY2045/TFY4250 Kvantemekanikk I, øving 10 1 ØVING 10

x 1, x 2,..., x n. En lineær funksjon i n variable er en funksjon f(x 1, x 2,..., x n ) = a 1 x 1 + a 2 x a n x n,

INF april, 2015 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8. Ble lagt ut 24. april

INF mai 2014 Stein Krogdahl, Ifi, UiO

Numerisk derivasjon og integrasjon utledning av feilestimater

Vår 2004 Ordinær eksamen

6 Brøk. Matematisk innhold Brøk i praktiske situasjoner Brøk som del av en mengde. Utstyr Eventuelt ulike konkreter, som brikker og knapper

UNIVERSITETET I OSLO

Kap.4 del 2 Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO

Løsningsforslag Kollokvium 6

1 Mandag 1. mars 2010

Nøtterøy videregående skole

RAMMER FOR SKRIFTLIG EKSAMEN I MATEMATIKK 1P-Y OG 1T-Y ELEVER 2015

gir g 0 (x) = 2x + x 2 (x + 3) x x 2 x 1 (x + 3) 2 x 5 + 2x 4 + 6x 3 + x 2 + x + 3 x 2 (x + 3) 2 g(x; y) h(x) F (x; y) =

MAT 1110: Løsningsforslag til obligatorisk oppgave 2, V-06

UNIVERSITETET I OSLO

Løsningsforslag til Eksamen i fag MA1103 Flerdimensjonal analyse

Tall i arbeid Påbygging terminprøve våren 2013

Vurderingsrettleiing Vurderingsveiledning Desember 2007

E K S A M E N. Matematikk 3MX. Elevar/Elever Privatistar/Privatister. AA6524/AA desember 2004 UTDANNINGSDIREKTORATET

NORGES LANDBRUKSHØGSKOLE Institutt for matematiske realfag og teknologi EKSAMEN I FYS135 - ELEKTROMAGNETISME

INF april, 2014 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8

a) Protokoll fra LMU-møte 30. april 2013 (se hil.no) b) Referat fra studienemndsmøte 26. april 2013 c) Referat fra studienemndsmøte 24.

Institutt for elektroteknikk og databehandling

INF 4130 / / Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger:

INF Noen oppgaver til kap. 8

R2 - Heldagsprøve våren 2013

INF oktober Stein Krogdahl. Altså: Hva kan ikke gjøres raskt (med mindre P = NP)

Microsoft PowerPoint MER ENN KULEPUNKTER

Eksamen våren 2016 Løsninger

1 Tallregning og algebra

Praktiske opplysninger til rektor. Fag: MATEMATIKK 1TY for yrkesfag Fagkode: MAT1006 Eksamensdato: Antall forberedelsesdager: Ingen

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Tall i arbeid Påbygging terminprøve våren 2014

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene

2-komplements representasjon. Binær addisjon. 2-komplements representasjon (forts.) Dagens temaer

Kap. 5, Del 3: INF5110, fra 1/3-2011

TFY4104 Fysikk. Institutt for fysikk, NTNU. Lsningsforslag til ving 8. a =

INF april, 2015 Kap. 8 kodegenerering. Del 2

Transkript:

Pensumoversikt - kodegenerering Kodegenerering del 2: tilleggsnott, INF5110 v2006 Arne Mus, Ifi UiO 8.1 Bruk v mellomkode 8.2 Bsle teknikker for kodegenerering 8.3 Kode for refernser til dtstrukturer (ikke 8.3.2) 8.4 Kode for generereing for kontroll-setninger og logiske uttrykk ( 8.5 Kode-generering for prosedyrer og kll ) ---------(resten ikke pensum ) 8.6 Kode produsert v to kommersielle kompiltorer 8.7 TM: En enkel mskin 8.8 Kode-gen for Tiny på TM 8.9 og 8.10 Optimlisering +Pensum: En del fr utdelt kp 9 fr Aho, Sethi og Ullmnn s kompiltorbok ( Drge-bok ) : 9.2, 9.4, 9.5 og 9.6 Mskinen det oversettes til To-dress-intruksjoner: op source dest mnge forskjellige hv ulike former, se neste foil ADD b SUB b MUL b ngir et register eller en lgercelle (med ett unntk) GOTO l + Betingete hopp + Prosedyrekll ++ Mer er en CISC-mskin enn en RISC-mskin Tilleggskost for dressering Instruksjonsformt og dressemodi del 1 source op-code Mode / R Mode / R M or C M or C 4 byte Adresseringsmodi: 1 Absolutt: M 0 Register: Ri R i : 1 Indeksert : C(RI) dest To måter R i R i source 4 byte 4 byte dest Bre om M eller C C: C:

Instruksjonsformt og dressemodi del 2 9.4 Bsle blokker og Flyt-grfer op-code Mode / R Mode / R M or C M or C 4 byte 4 byte 4 byte Adresseringsmodi: 0 Indirekte Register *R Ri 1 Indirekte *C(Ri) R i C: 1 Literl #M bre for source En Flyt-grf er en grf der nodene er sekvenser v tredresse-setninger Nodene i grfen er klt Bsle Blokker En bsl blokk representer en sekvens v tredresse Progrmkontrollen kommer lltid inn i første setning og går sekvensielt gjennom hver setning uten stopp eller sidesprng. Eneste unntk er t siste setning kn være et hopp muligenens betinget. Kntene i grfen representerer de mulige veier progrmflyten-kontrollen kn t Innen en Bsl Blokk er det lett å holde oversikt over hvor ting er etc,. og lett å gjøre bstrkt interpretsjon. Eksempel på oppdeling i bsle blokker Flyt-grf Bsle blokker: Fr og med en leder frm til neste Algoritme: Første setning er leder en goto i, gjør setning i til en leder setninger etter goto.. er ledere If GOTO L5 L1: L2: L5 L3: IF GOTO L1 If GOTO L5 L1: L2: L5 L3: IF GOTO L1 Det er tydligvis ingen som går til L2. Metodekll tenker vi ikke på. Kn behndles litt forskj. vh. v formål. Nodene i flyt-grfen er de bsle blokkene med en initiell node (den første bsle blokken i progrmmet). Det er en rettet knt fr blokk B 1 til B 2 hvis B 2 kn følge direkte etter B 1 i en eller nnen utførelse. Det vil si t det enten er: En betinget eller ubetinget goto fr siste setning i B 1 til første setning i B 2 eller B 2 følger direkte etter B 1 i progrmmet, og B 1 ender ikke i en ubetinget goto. Vi sier t B 1 er en forgjenger til B 2 og B 2 er en etterfølger til B 1

Flytgrf fr Louden 8.9 oftest: En flytgrf for hver metode for hver metode Løkker i flyt-grfer En goto-setning eller if-goto-setning vil lltid være siste setning setning i sin bsle blokk (men ikke lle bsle blokker slutter slik!) -Metodekll kn plsseres litt forskjellig vh. v grfens bruk -Dnne egne bsle blokker -Kn ligge først i en bsl blokk? Bruk, for eksempel : Kn vi flytte beregninger ut v løkk? while (i<n) { i= i + 2*n; A[i] = n/2; } Kn vi holde ofte brukte vrible i registre mens vi er i løkk? Ant følgende grf v Bsle Blokker: B2 B0 B1 B5 B3 B4 En løkke er et utplukk L v noder slik t: 1) Dersom Bx L og By L, så går det en rettet vei fr Bx til By v lengde 1. 2) L hr en inngng : Det finnes bre én B L slik t Bn B og Bn L. {B3,B4} og {B1,B2,B3,B4,B5} er løkker {B1,B2,B5} er ikke løkke (!?) Grunnen for 2): Prktisk: Ett sted å initilisere løkke & Ett sted om vi skl flytte noe ut v løkk Hv er liveness ( i live )? kp 9.5 Neste bruk og i live innen én bsl blokk Er uvhengig v bsle blokker Defineres i 9.4 og brukes i 9.5 Terminologi: := x + y; if (x<) goto L; Intuitiv def defineres, og her brukes x og. En vribel x er levende / i live på et gitt sted i progrmmet dersom den verdien den der hr hr kn bli brukt i en eller nnen utførelse. Def. som kn vgjøre om x er levende u = v+w; = b + c; x = u + v x = w d = x + y Stedet i Er x i live her? Svret er j, om det finnes en TAsetning j slik t det er minst én eksekveringsvei fr i til j uten noen titordning eller definisjon ti x. Før mn gjør kodegenerering for en bsl blokk er det lurt å skffe seg oversikt over bruk v vrible: En vribelforekomst hr en neste-bruk : Den verdien den hr blir brukt senere i den bsle blokk. D kn det være lurt å l den bli værende i et register En vrible-forekomst hr ingen neste-bruk, men er i live : Verdien i vribelen blir verken brukt eller strøket senere i blokken Men den kn bli/blir brukt i senere blokker Vi må psse på å bevre verdien En vribel-forekomst er død Def: En vribel som ikke er i live på et gitt punkt, sies å være død

Eksempel på informsjon om neste bruk og i live : Angir t den hr neste bruk, og hvor. Disse er i live : Angir t den er i live, uten noen neste bruk t1 = b t2 = t1 * = t1 * t2 t1 = t1 - c = t1 * Altså : I live etter blokk:,b,c Dvs., progrmvriblene. er død her siden den får ny verdi innen denne blokk senere : Er død t1 er død, siden den bre brukes innen denne blokk Kommentrer: 1. Temporære brukes også ofte på tvers v bsle blokker (for eksempel flytting) 2. Globl dtflyt-nlyse finner de vrible som fktisk er i live etter en bsl blokk. Algoritme for å finne informsjon om neste bruk og i live Hr en tbell T over lle vrible i blokk, der hver vribel kn merkes som: 1) i live, og hr gitt en neste bruk i blokk 2) i live, men uten neste bruk i blokk 3) død (og dermed ingen neste bruk ) Initilisering: De vriblene som er i live ved slutten v blokk (oftest: brukervrible) merkes med 2 i T, resten merkes 3 1. Merk x i S slik x er merket i T 2. Forndre x sitt merke i T til 3 3. Merk y og z i S slik de er merket i T 4. Forndre i T merkene for y og z til 1, med neste bruk stt til h.h.v y og z i S. Må skille mellom 1. og 3. for t = + b; skl bli riktig (Trykkfeil som er rettet i det utdelte) Algoritme for neste bruk og i live Gå bkfr og hold greie på sttus til lle vrible: (N.B. Trykkfeil i boks lgoritme rettet i det utdelte) t1 = b t2 = t1 * = t1 * t2 t1 = t1 - c = t1 * Sttus på de forskjelliige stdier: b c t1 b c t1 t2 t2 b c t1 t2 b c t1 t2 b c t1 t2 Døde vrible er tegnet uten ring rundt. I siste linje ntr t vi t bre progr. vrible overlever fr en blokk til en nnen. Kodegenererings-lgoritme Enkel lgoritme: Lger mskinkode for én og én Bsl Blokk Algoritmen holder (innefor hver Bsle Blokk) beregnede verdier i registre så lngt det er mulig (Spesielt viktig om de hr neste bruk ) Når progrmkontrollen går mellom de Bsle Blokkene så ligger smtlige vribel-verdier i sine respektive hukommelses-plsser (ntr t temporærer vrible ikke er i live ) Kodegenerering for hver Bsl Blokk blir d: Det genereres kode for én og én tredresse-setning v gngen, i tur og orden fr første til siste setning Etter siste setning legges verdier fr registre tilbke til sine respektive hukommelses-plsser Noen mngler ved lgoritmen Vrible som kun blir lest innenfor en Bsl Blokk blir ikke lgt i registre, selv om det er mnge refernser til vribelen I enkleste utgve sjekker den ikke på komuttivitet

Register- og dresse-deskriptorer Kodegenertor-lgoritmen bruker deskriptorer for å holde greie på hv som er i registre og i dresser for vrible: En Register-deskriptor for hvert register holder greie på hv som for tiden er i et register. Ved strten skl lle register-deskriptorer ngi t registeret er tomt. Generelt ngir register-deskriptoren t registeret inneholder verdien null eller flere vrible (nvn). En Adresse-deskriptor holder greie på hvor verdien v en vribel finnes i øyeblikket. Det kn være i et register, en loksjon på stkken, en hukommelses-dresse eller i en mengde v slike. Disse opprettes etter hvert som det blir snkk om vriblene. At det ikke er noen dresse-deskriptor for x betyr: -x er progrmvribel: Verdien ligger (bre) i vribel-loksjon - x er temporær vribel: Vribelen er ikke i bruk Informsjonen er redundnt dvs. vi hr begge deskriptor-typene (dresse og register) bre for å få rske oppslg. Kunne greid oss med én v dem. Kodegenerering for: X = Y op Z 1. Finn et register for å holde resulttet: 1. L = getreg(x = Y op Z) 2. Sjekk dresse-deskriptor for Y: Y = beste loksjon der Y finnes Hvis Y L: MOV Y, L 3. Sjekk dresse-deskriptoren for Z: Z = beste loksjon der Z finns OP Z, L 4. Y og/eller Z: - hr ingen ny bruk og - er ikke i live - er i et register AltsÅ. er død Oppdter i så fll deskriptoren for registrene: Registrene inneholder nå ikke Y og/eller Z 5. Oppdterer dresse-deskriptor for X: X.loc = {L}. Hvis L er et register så oppdter også register-deskriptorer for L: L.contin = {X} Getreg (X = Y op Z) Eksempel på kode-generering Opprinnelig verdi v X ødelegges 1. Hvis Y ikke er i live etter X = Y op Z og Y er lene i R i : - Oppdter (R i ) else 2. hvis det finnes et tomt register R i : Return (R i ) else 3. hvis X hr en neste bruk eller X er lik Z eller opertoren ellers krever et register: Velg et (okkupert) register R Hvis verdien ikke ligger i hukommelsen: MOV R, MEM Oppdter dresse-deskriptor for MEM return (R) else 4. Return (X), ltså lever hukommelses-plssen til X (må knskje opprettes om X er en temp-vribel NB: For t X = Y + X skl funke, måtte 3 modifiseres, ellers ville vi fått: MOV Y X Add X X Setninger t = - b u = c v = t + u d = v + u Generert kode MOV, R0 SUB b, R0 MOV, R1 SUB c, R1 ADD R1, R0 ADD R1, R0 MOV R0, d Reg. deskriptorer Alle Reg er tomme R0 inneholder t R0 inneholder t R1 inneholder u R0 inneholder v R1 inneholder u R0 inneholder d Adr. deskriptorer t i R0 t i R0 u i R1 v i R0 u i R1 t i R0 d i R0 og hukommelsen

Eksmen INF5110 våren 2004 Oppgve 1 Vi ser på følgende sekvens v tredresse-setninger: (1) := b - c (2) b := d - (3) t1:= - b (4) t2:= - c (5) t3:= t1 + t2 (6) d := t3 - t2 (7) if d > 0 goto 10 (8) := c - d (9) goto 11 (10) := c + b (11) c := - d (12) if c < goto 8 (13) c := + d (14) goto 3 Spørsmål 1. Del opp sekvensen over i bsle blokker. Angi svret ved bre å liste opp linjenumrene på strtlinjen i hver blokk. Spørsmål 1.b Gi de bsle blokkene nedover i progrmbiten nvnene B1, B2, osv.tegn så en frittstående utgve v flyt-grfen til progrmmet, der nodene bre er merket med sitt nvn (uten noe kode inni). Spørsmål 1.c Angi kort krvene som i vårt pensum settes for t noe skl være en ``løkke'' i en flytgrf? Spørsmål 1.d Angi de løkkene som finnes i flytgrfen fr 1.b Spørsmål 1.e Forklr kort hv det vil si t en vribel er ``i live'' (``live'')på et ngitt sted i progrmmet. Spørsmål 1.f Avgjør følgende, og gi korte forklringer: - Er vriblen i live etter linje (4) i progrmbiten over?