Kap. 8 kodegenerering INF april, 2009
|
|
|
- Torild Kristoffersen
- 9 år siden
- Visninger:
Transkript
1 Kap. 8 kodegenerering INF april, 2009 Stein Krogdahl, Ifi UiO Forelesninger framover: Torsdag 23. april: 1 time kapittel 8, 1 time Oblig 2 Tirsdag 28. april: Oppgaver kapittel 7, kapittel 8 + 1
2 Pensumoversikt - kodegenerering Helt sikkert pensum: 8.1 Bruk av mellomkode 8.2 Basale teknikker for kode- generering 8.3 Kode for referanser til datastrukturer (ikke alt) 8.4 Kode for generereing for kontroll-setninger og logiske uttrykk Kanskje også noe fra: 8.5, 8.9 og 8.10 Samt: Oppkopiert: Om lur bruk av registre til å holde data som snart skal brukes om igjen (samme som i fjor?) Noe om generiske mekanismer i programmeringsspråk Litt mer om Javas byte-kode NB: Detaljert pensumliste kommer! 2
3 Hvordan er instruksjonene i en virkelig CPU? Ofte: Et antall Registere (8-128) hvor add, mult, sub, shift... går mellom disse Men på noen maskiner også disse opersjoner til/fra memory Alltid load og store fra register til/fra memory Base- og indeks-registre (spesielle registre, eller alle kan være det) En instruksjon brytes ned i en rad mikro-instruksjoner Viktig: Pipe-line (typisk 20 mikro-instr. kan være under utførelse samtidig) Spekulativ utføring: Starter på de neste instruksjoner, men må restarte dem om inneværende instr. forandrer deres input-data Ved betingede hopp: Utfører begge grener, men gir opp den ene når valget er klart Å hente data fra lageret er det som tar tid. Derfor: Flere nivåer med cache-lager, som fylles og utnyttes automatisk. 3
4 Intel Utviklet fra 8bit-16bit-32bit. Nå også 64 bit. Variabelt format 722-sider manual noen hundre instr. 4
5 Hukommelses-nivåer størrelse og hastighet Lagertype Størrelse Rel. hastighet Register (nå ca ns) cache L1 data og instr kb 2-3 cache L Mb cache L3 noen Mb? (Itanium) hoved-memory 2-8 Gb Disk Gb (ca. 10 ms) Utførelsestiden blir vanskelig å forutsi på grunn av cachene Det kreves masse logikk for å få dette til å virke (assosiativ aksess) Om det er flere kjerner på CPUen blir det ekstra ille (lager-koherens) 5
6 8.1 Bruk av mellomkode Man kan veldig godt generere maskinkode direkte fra syntakstreet Men: Det kan være greit å overføre programmet til en lineær form: mellom-kode Grunn: Greit for optimalisering (flytte rundt), greit å legge på fil Vi skal se på to former mellom-kode: Treadresse-kode (TA-kode) Setter navn på mellomresultater (kan tenkes på som registre) Forholdsvis lett å snu om på rekkefølgen av koden (optimalisering) P-kode (Pascal-kode a la Javas byte-kode, og den til Oblig 2) Var opprinnelig beregnet på interpretering, men oversettes nå gjerne Mellomresultatene på en stakk (operasjonene komme postfiks) Mange valg, f.eks.: Bevarer vi symboltabellene? Er det operasjoner for array-aksess (eller blir dette løst opp i flere, enklere operasjoner?) 6
7 Vi skal se på en del oversettelser: Vi skal først se på følgende: Generering av TA-kode ut fra tre-strukturen fra sem. analyse Generering av P-kode ut fra tre-strukturen fra sem. analyse Dette er omtrent som i Oblig 2 Generering av TA-kode fra P-kode Generering av P-kode fra TA-kode Denne er ikke så lett å få effektiv Dette kan også sees som eksempel på enkel generering av maskinkode Men da uten å ta hensyn til registerallokering 7
8 Tre-adresse (TA)-kode - eksempel TA grunnform: op = +, -, *, /, <, >,. and, or Tre-adresse (TA) kode Også: x = op y op = not, -, float-to-int. En alternativ kode-sekvens t 1, t 2, t 3, er temporære variable. Andre TA-instruksjoner: x = y if_false x goto L label L read x write x 8
9 Oversettelse til treadresse-kode Spørsmål: -Er det egne instruksjoner for int, long, float,..? -Hvordan er variable representert? -ved navn -peker til deklarasjon i symb.tabell -ved maskinadresse -Hvordan er hver instruksjon lagret? - kvadrupler - (tripler, der adressen til instruksjonen er navn på en ny temporær variabel)
10 En mulig C-struct for å lagre en treadresse-struktur operasjonskodene op: - opkind (opcode) addr1: Hver adresse har denne formen - kind, val/name addr2: - kind, val/name addr3: - kind, val/name 10
11 P-kode (Pascal-kode utfører beregning på en stakk) koden utføres normalt (etter hverandre + jump, men beregninger på stakk) push koder (= load på stakken): lod ; load value ldc ; load constant lda ; load adress 11
12 P-kode II 12
13 P-kode for fakultets-funksjonen 1 2 Blir typisk mange flere P-instruksjoner enn TA-instruksjoner for samme program (Hver P-instruksjon har maks én lager-adresse )
14 Angivelse av P-kode ved attr.-grammatikk 14
15 Tenkt generering av P-kode etter attr.-gram. (Vil aldri gjøre det slik i praksis!) pcode = pcode = pcode = pcode = num ad val pcode= pcode = num val 15
16 Kodegenerering kan gjøres ved rekursiv gjennomgang av syntakstreet. Forslag til tre-node: Tre-node: Opcode= = Opcode= + IdKind ConstKind 16
17 Metode-skisse til generelt bruk rekursivt kall rekursivt kall Prefiks - operasjoner Infiks - operasjoner Postfiks - operasjoner Generert kode (ofte er flere av delene tomme): oppstarts-kode bergen v. operand fiks på v. operand beregn h. operand gjør operasjonen 17
18 Generering av P-kode fra tre-struktur (som i Oblig2) rek.kall rek.kall rek.kall Oversiktlig versjon: switch nodekind { Merk: Identifikator case op-node: og konstant-streng switch opkind { ligger i noden case + : { rek. kall for venstre subtre; rek. kall for høyre subtre; emit1 ( adi ); } case = : { emit2 ( lda, identifikator); rek. kall for venstre subtre; emit1 ( stn ); } } case konst-node { emit2 ( ldc, konstant-streng); } case ident-node { emit2 ( lod, identifikator); } }
19 Angivelse av TA-kode ved attr.-grammatikk 19
20 Tenkt generering av TA-kode etter attr.-gram. (Gjøres ikke slik i praksis) tacode = name = ; ; tacode = name = tacode = name = tacode = name = ; ; ; ; tacode = name = tacode = name = 20
21 Generering av rent tekstlig TA-kode fra tre-struktur Hoved-delen av en rekursive metode. Metoden leverer et navn: switch nodekind { case op-node: switch opkind { case + : { tempnavn = nytt temporær-navn; opnavn1 = rek kall for venstre subtre; opnavn2 = rek kall for høyre subtre; emit ( tempnavn = opnavn1 + opnavn2 ); return (tempnavn); } case = : { varnavn = id. for v.s.-variabel (ligger i noden); opnavn = rek kall for venstre subtre; emit ( varnavn = opnavn ); return (varnavn); } } case konst-node { return (konstant-streng); } case ident-node { return (identifikator); } }
22 Fra P-kode til TA-kode ( Statisk simulering ) Stadier: P-kode: Stakk: Ønskemål: 22
23 Fra TA-kode til P-kode - ved makro-ekspansjon Makro for: a = b + c Har tidligere sett kortere versjon: Ny versjon: 13 instr. Gml. ver. : 7 instr 23
24 Fra TA-kode til P-kode: litt lurere, men bare skisse Tegner opp data-flyt grafen / treet Prøver å lage bedre kode Generelt: En rettet graf uten løkker (DAG) Må gjøre forskjell på temporære og program-variable. Kan da se det som: Det gjør at det generelt blir vesentlig verre enn det ser ut her 24
25 Kap. 8.3 Aksess av datastruktur, trenger mer fleksibel adresse-beregning TA-kode: To nye måter å adressere på P-kode: To nye instruksjoner : & X Adressen til x (ikke for temporære) *t Indirekte gjennom t indirect load indexed address x 10 Sett inn 2 her 25
26 Aksessering av data i structer, objekter etc. Med slike instruksjoner kan vi lage TA-kode og P-kode for å aksessere lokale variable i structer, recorder, objekter etc. Vi ser imidlertid ikke på detaljene i dette rec 26
27 Litt generelt til kap. 8.3 I boka lages det nokså lavnivå TA-kode og P-kode Man kan ikke lenger se hva slags språk-konstruksjoner den kommer fra Det er ikke opplagt at bokas variant er det fornuftigste om mellom-koden skal oversettes videre til maskin-kode, f.eks: Beholde en ikke-lokal eller ikke-global variabel på formen: X: (rel.niv.=2, reladr=3) Istedenfor å oversette til formen: fp.al.al.(reladr=3) i TA-kode eller P-kode Kan kanskje like gjerne se oversettelse til lav-nivå TA-kode eller P-kode som eksempel på oversettelse direkte til maskin-kode men vi får da ikke register-allokerings-problemet 27
28 8.4 : If/while kap.8.3 Skisse av TA-kode Skisse av P-kode 28
29 while - setning TA-kode: Om det skjer et break inne i her skal det hoppes ut av while-setningen (til L1) P-kode 29
30 Behandling av boolske uttykk Mulighet 1: Behandle som vanlige uttrykk Mulighet 2: Behandling ved kort-slutning Eksempel i C siste del beregnes bare dersom første del er sann: P-kode: Merk: Om dette uttrykket stod i sammenhengen: if <utr> then S1 else S2 b ldc a så kunne hoppet a til L1 gå direkte til else grenen og alt fra-og-med hoppet b kunne fjernes Trykkfeil i boka 30
31 Kode for if/while-setninger Tre-node: Angir bare false eller true binder sammen Ser noe merkelig ut når alle boolske uttrykk er konstanter: 31
32 Rekursiv prosedyre for P-kodegenerering for setninger (som i Oblig 2) Hit skal en break i kildeprogr. gå Rek. kall Rek. kall Kode for S Rek. kall Rek. kall Rek. kall 32
33 Rekursiv prosedyre for P-kodegenerering for setninger, penere utgave. Hit skal en break i kildeprogrammet gå void gencode(treenode t, String label){ String lab1, lab2; if t!= null{ // Er vi falt ut av treet? switch t.kind { case ExprKind { // I boka (forrige foil) er det veldig forenklet. // Kan behandles slik uttrykk er behandlet tidligere } case IfKind { // If-setning gencode(t.child[0], label); // Lag kode for det boolske uttrykket lab1= genlabel(); emit2( fjp, lab1); // Hopp til mulig else-gren, eller til slutten av for-setning } } } Om man kommer til break skal man gå ut av nærmete omsluttende whilesetning (angitt av label-parameteren) gencode(t.child[1], label); // kode for then-del, gå helt ut om break opptrer (inne i uttrykk??) if t.child[2]!= null { // Test på om det er else-gren? lab2 = genlabel(); emit2( ujp, lab2); // Hopp over else-grenen } emit2( label, lab1); // Start på else-grenen, eller slutt på if- setningen if t.child[2]!= null { // En gang til: test om det er else-gren? (litt plundrete programmering) gencode(t.child[2], label); // Kode for else-gren, gå helt ut om break opptrer emit2( lab, lab2); // Hopp over else-gren går hit } } case WhileKind { /* mye som over, men OBS ved indre break. Se boka og forrige foil */ } case BreakKind { emit2( ujp, label); } // Hopp helt ut av koden dette gencode-kallet lager // (og helt ut av nærmest omsluttende while-setning) 33
Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO
Pensumoversikt - kodegenerering Kap. 8 del 1 kodegenerering INF5110 v2006 Arne Maus, Ifi UiO 8.1 Bruk av mellomkode 8.2 Basale teknikker for kodegenerering 8.3 Kode for referanser til datastrukturer (ikke
INF og 13. april, Stein Krogdahl, Ifi UiO
INF5110 12. og 13. april, 2011 Kap. 8 kodegenerering Endelig utgave 13/4 Stein Krogdahl, Ifi UiO 1 Kodegenerering g Denne uken, fra kapittel 8. Dette er nok til Oblig 2, og er stort sett uavhengig av maskin-detaljer,
Stein Krogdahl, Ifi UiO
INF5110 24. og 25. april, 2012 Kap. 8 kodegenerering Det var litt tull på aller siste foilen, derfor legges dette ut om igjen 16. mai. Her er både de vanlige lysarkene og «ekstrastoff» (pensum!) fra denne
INF april, 2013 Kap. 8 kodegenerering
INF5110 16. april, 2013 Kap. 8 kodegenerering Foilene inneholder også noe ekstra-stoff som ikke står i boka, men som er pensum Stein Krogdahl, Ifi UiO Stoffet fra kap. 8 er nok til Oblig 2 8.1 Bruk av
INF Noen oppgaver til kap. 8
INF5110 2015 Noen oppgaver til kap. 8 Gjennomgås 28. april, 2015 Stein Krogdahl 1 Oppgave 8.1.c (fra boka) Lag for hånd TA-kode for følgende uttrykk: a * b + a * b * c Du skal ikke prøve å optimalisere
INF april, 2014 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8
INF5110 25. april, 2014 Stein Krogdahl Ifi, UiO Svar på oppgaver til kap. 8 som ble lagt ut 24. april Feil bes rapportert til: «[email protected]» 1 SVAR: Oppgave 8.1.c (fra boka) Lag for hånd TA-kode
Litt om Javas class-filer og byte-kode
Litt om Javas class-filer og byte-kode INF 5110, 11/5-2010, Stein Krogdahl (Dessverre litt få figurer) Disse formatene ble planlagt fra start som en del av hele Java-ideen Bt Byte-koden gir portabilitet
NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse
NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 8/5-2012, Stein Krogdahl Byte-koden for Java og.nett (C#) http://en.wikipedia.org/wiki/java_bytecode_instruction_listings
INF mai 2014 Stein Krogdahl, Ifi, UiO
INF5110 7. mai 2014 Stein Krogdahl, Ifi, UiO NB: I dagens stoff skal vi også se på en del begreper som vi bare løselig vil se på bruken av Dette er foiler til: Tilleggsnotat fra bok av Aho, Sethi og Ullman
Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)
Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode) Disse foilene er pensum INF 5110, 30/4-2013, Stein Krogdahl Byte-koden for Java og.nett (C#) kan leses her: http://en.wikipedia.org/wiki/java_bytecode_instruction_listings
Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri.6,.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/5 Repetisjon: Statiske språk uten rekursive
Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:
Semantisk Analyse del I
Semantisk Analyse del I Attributtgrammatikker Kapittel 6.1-6.2 26.02.2013 1 Statisk semantisk analyse kapittel 6: Innhold Generelt om statisk semantisk analyse Attributt-grammatikker (kapittel 6.1-6.2)
Del 1 En oversikt over C-programmering
Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av
Introduksjon til DARK assembly
Introduksjon til DARK assembly Magnus Jahre Institutt for datateknikk og informasjonsvitenskap 2 Plan Assembly vs. Java Dark stakkmaskin Oversikt over stakkmaskinen Dark stakkmaskin eksempel Dark Load-Store
INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt
INF5110 Obligatorisk Oppgave 2 del 2 Andreas Svendsen SINTEF 23. April 2009 Oversikt Tilbakeblikk på oppgaven Eksempel på sjekk av semantikk Eksempel på kodegenerering Nødvendige instruksjoner for IF-noden
INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )
INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) PRAKTISK INFORMASJON 2 Praktisk informasjon Kursansvarlige Ragnhild Kobro Runde ([email protected])
Kap. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO
Kap. 4 del I Top Down Parsering INF5110 v2006 Stein Krogdahl Ifi, UiO 1 Innhold First og Follow-mengder Boka ser på én parseringsmetode først, uten å se på First/Follow-mengder. Vi tar teorien først To
Forelesning Instruksjonstyper Kap 5.5
TDT4160 Datamaskiner Grunnkurs Forelesning 22.11 Instruksjonstyper Kap 5.5 Dagens tema Instruksjonstyper (5.5) Datatransport Datamanipulering Betingede hoppinstruksjoner Prosedyrekall Løkker I/O Eksempler
Løsnings forslag i java In115, Våren 1996
Løsnings forslag i java In115, Våren 1996 Oppgave 1a For å kunne kjøre Warshall-algoritmen, må man ha grafen på nabomatriseform, altså en boolsk matrise B, slik at B[i][j]=true hvis det går en kant fra
INF5110, onsdag 19. februar, Dagens tema: Parsering ovenfra-ned (top-down)
INF5110, onsdag 19. februar, 2014 Dagens tema: Kapittel 4 Parsering ovenfra-ned (top-down) Vi har med alle foilene til kap. 4 her, også de som ble gjennomgått mot slutten av forelesning 7. februar Pensum
Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015
Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den
INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:
TRÆR Vi skal i denne forelesningen se litt på ulike typer trær: Generelle trær (kap. 4.1) Binærtrær (kap. 4.2) Binære søketrær (kap. 4.3) Den siste typen trær vi skal behandle, B-trær (kap. 4.7) kommer
Forelesning 15.11. Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B
TDT4160 Datamaskiner Grunnkurs Forelesning 15.11 Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B Dagens tema Datatyper (5.2) Heltall Ikke-numeriske datatyper Instruksjonsformat (5.3) Antall
Statisk semantisk analyse - Kap. 6
Statisk semantisk analyse - Kap. 6 Generelt om statisk semantisk analyse Attributt-grammatikker Symboltabell Datatyper og typesjekking 3/15/11 1 Generelt om semantisk analyse Oppgave: Sjekke alle krav
Velkommen til INF5110 Kompilatorteknikk
Velkommen til INF5110 Kompilatorteknikk 15. januar 2013 Kursansvarlige: Stein Krogdahl [[email protected]] Ragnhild Kobro Runde [[email protected]] Henning Berg (oblig-ansvarlig) [[email protected]] Kursområdet:
INF5110. Oblig 2 presentasjon
INF5110 Oblig 2 presentasjon Informasjon Oppgaven Semantikksjekk Kodegenerering Bytecode-biblioteket Ant-targets Oppsummering Oversikt Informasjon Oblig 2 tilgjengelig på kurssiden Patch med testfiler
Programmeringsspråket C Del 3
Programmeringsspråket C Del 3 Michael Welzl E-mail: [email protected] 29.08.13 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
Viktig. Rettet i koden. Oppgaven. Obligatorisk oppgave 2 - Kort om oppgaven og litt informasjon. Fredrik Sørensen OMS-gruppen, IfI
Viktig Obligatorisk oppgave 2 - Kort om oppgaven og litt informasjon Fredrik Sørensen OMS-gruppen, IfI Ny patch (patch_oblig2.zip) legges ut på kurssiden i dag. Oblig 1 vil bli rettet denne uken Sjekk
INF1000 undervisningen INF 1000 høsten 2011 Uke september
INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første
Del 4 Noen spesielle C-elementer
Del 4 Noen spesielle C-elementer 1 RR 2016 Header-filer inneholder Prototypene til funksjonene i standard biblioteket Verdier og definisjoner som disse funksjonene bruker #include #include
Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt
Dagens tema Mer MIPS maskinkode (P&H: 4.4 + 3.6 + 3.3 + A.6 + A.10) Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt Ark 1 av 16 Forelesning
Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO
Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110 NB: Disse foilene er litt justert og utvidet i forhold til de som er delt ut tidligere på en forelesning. Ta dem ut på nytt! Stein Krogdahl
Kap. 5, Del 2: INF / (og 2/3 og 3/3)
Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 23/2-2010 (og 2/3 og 3/3) Løsningsforslag s til oppgaver til kap 4 ligger bakerst her Oblig 1 legges ut i løpet av uka Stein Krogdahl, Ifi,
Dagens tema: 12 gode råd for en kompilatorskriver
Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter 12 gode råd Hva skal gjøres med navn? Sjekking av navn En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme
Anatomien til en kompilator - I
Anatomien til en kompilator - I program Symboltabell tekst tokens syntaks-tre beriket syntaks-tre Finne struktur i programmet OK i henhold til grammatikk? Preprocessor Makroer Betinget kompilering Filer
Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering
Dagens tema Dagens tema: Kodegenerering Introduksjon Enkle variable Uttrykk Tilordning Litt mer kompliserte setninger med betingelser (Alt om kodegenerering unntatt funksjoner og array-er.) Prosjektoversikt
Oversikt. Praktisk. Litt om meg. Obligatorisk oppgave 1 - Kort om oppgaven og verktøyene. Fredrik Sørensen OMS-gruppen, IfI.
Oversikt Obligatorisk oppgave 1 - Kort om oppgaven og verktøyene Fredrik Sørensen OMS-gruppen, IfI Litt om meg Praktisk Oppgaven Verktøyene Ant JFlex CUP Utfordringer Torsdag Litt om meg Fredrik Sørensen
Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF /2-2011
Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 22/2-2011 Stein Krogdahl, Ifi, UiO Oppgaver til kap 4: På slutten av dagens foiler ligger noen oppgaver med svarforslag. Disse vil bli forholdsvis
Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær
Dagens tema INF2220 - Algoritmer og datastrukturer HØSTEN 2007 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 2: Binærtrær og abstrakte datatyper (ADT) Kort repetisjon Generelle trær
Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema
va er en algoritme? Vanlig sammenligning: Oppskrift. nput lgoritme NF1020 - ØSTEN 2006 Kursansvarlige Ragnar Normann E-post: [email protected] Output Knuth : tillegg til å være et endelig sett med regler
Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays
Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson
Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning
Dagens tema Typer (Kapittel 3 frem til 331) Innføring i ML (Kapittel 743 & ML-kompendiet) Typer En (data-)type består av: en mengde verdier en mengde operasjoner man kan anvende på disse verdiene Eksempel:
Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 18. mai 1993 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: IN 110 Algoritmer
public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:
Høgskolen i Gjøvik Avdeling for Teknologi E K S A M E N FAGNAVN: FAGNUMMER: Algoritmiske metoder I L 189 A EKSAMENSDATO: 11. desember 2001 KLASSE: 00HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID: 09.00-14.00
ITPE/DATS 2400: Datamaskinarkitektur og Nettverk
ITPE/DATS 2400: Datamaskinarkitektur og Nettverk Forelesning 9: Instruksjonsettarkitektur 3 Knut H. Nygaard / T. M. Jonassen Institute of Computer Science Faculty of Technology, Art and Design Oslo and
Datatyper og typesjekking
Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører
