Oversættere Skriftlig eksamen onsdag d. 19. april 2006

Relaterede dokumenter
Oversættere Skriftlig eksamen onsdag d. 20. april 2005

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 18. april 2007

Oversættere / Datalogi 1E

Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere Skriftlig eksamen onsdag d. 25. januar 2006

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004

Skriftlig Eksamen Beregnelighed (DM517)

Eksamensopgaver i DM17, Januar 2003

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 25. januar 2006

MIPS modulet og registerallokatoren

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 23. juni 2003

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 28. maj min min min min.

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

MIPS, registerallokering og MARS

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen torsdag den 16. januar 2003

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Noter til DM517 Beregnelighed

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E

Oversættere, ugeopgave 3

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen fredag d. 16. januar 2004

Integralregning med TI-Interactive! Stamfunktioner Integraler Arealer Jan Leffers (2005)

DATALOGI MASKINARKITEKTUR

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Sider og segmenter. dopsys 1

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Skriftlig Eksamen Diskret Matematik (DM528)

It og informationssøgning Forelæsning november 2006 Nils Andersen. Regulære udtryk og formelle sprog

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Differential- regning

Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Differential- regning

Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538)

Generelle kommentarer omkring løsning af fysikopgaver

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Reeksamen 2014/2015 Mål- og integralteori

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

MULTI 6 Forenklede Fælles Mål

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Reeksamen i Diskret Matematik

Regularitet og Automater. Tobias Brixen Q4-2012

Sider og segmenter. dopsys 1

Anvendelse af matematik til konkrete beregninger

Computerarkitektur Eksamen 2014Q3. Niels Olof Bouvin. Studienummer Navn

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

Computerarkitektur Eksamen 2014Q2. Niels Olof Bouvin A. Studienummer Navn

Eksamen i Diskret Matematik

Oversigt over Forenklede Fælles Mål i forbindelse med kapitlerne i MULTI. Problembehandling. Modellering

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Fejlkorligerende køder Fejlkorrigerende koder

o < x < 1. In x In 2 KØBENHAVNS UNIVERSITET. NATURVIDENSKABELIG EMBEDSEKSAMEN. MATEMATIK FOR BIOLOGER. Vinteren 1985/86.

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober Jonas Christiansen Voss

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Eksamen i Lineær Algebra

Vejledning. Indhold. 1. BitLocker. 2. Vigtig information

Kernealphaerne Indhold af G1

Eksamen i Diskret Matematik

APPENDIX A INTRODUKTION TIL DERIVE

Grafregnerkravet på hf matematik tilvalg

I kapitlet arbejdes med følgende centrale matematiske objekter og begreber:

Reeksamen i Diskret Matematik

Divide-and-Conquer algoritmer

Reeksamen i Calculus

Eleverne skal lære at:

Sproget Rascal (v. 2)

Oversigt over Forenklede Fælles Mål i forbindelse med kapitlerne i MULTI. Ræsonnement og tankegang. Modellering

Skriftlig eksamen Vejledende besvarelse MATEMATIK B (MM02)

Første del af rapporten består af et diagram, der viser, hvor mange point eleverne på landsplan fik i de enkelte opgaver.

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

Dat 2/BAIT6/SW4: Syntaks og semantik En manual for studerende

Lineær Algebra F08, MØ

NATURVIDENSKABELIG KANDIDATEKSAMEN VED KØBENHAVNS UNIVERSITET INVESTERINGS- OG FINANSIERINGSTEORI

Kom godt i gang med I-bogen

Høvdingebold. Introduktion. Scratch

Eksamen 2014/2015 Mål- og integralteori

Matematik samlet evaluering for Ahi Internationale Skole

TW 2011/12. Fag: Matematik Klasse: 9. Mandag, Tirsdag, fredag. Formål for faget matematik:

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Klassen er sammenlæst, altså 5 og 6 klasse på en og samme tid. Samtidig er klassen pt på ca 11 elever ialt.

Matematik. Matematiske kompetencer

Variabel- sammenhænge

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

Transkript:

Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 19. april 2006 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige eksamen i Oversættere er bestået, hvis minimum 50% af opgaven er besvaret tilfredsstillende, eller en proportionalt større del er løst delvist tilfredsstillende. Hver opgaves vægt i procent er angivet ved opgavens start. Ligeledes er de enkelte spørgsmåls andel i denne vægt angivet. Alle de sædvanlige hjælpemidler må benyttes, herunder også lydløse elektroniske lommeregnere og PDA ere (f.eks. Palm Pilot), dog ikke hvis disse har trådløs netadgang eller telefoni. En almindelig bærbar PC vil ikke være tilstrækkelig lydløs p.g.a. blæser, harddisk og støjende tastatur. I tvivlstilfælde gælder eksamensvagtens afgørelse. Det er tilladt at bruge blyant til besvarelsen, såfremt denne er tydeligt læselig.

Skriftlig eksamen onsdag d. 19. april 2006 i Oversættere side 1 af 4 Opgave 1: Grammatikker (15%) Betragt følgende kontekstfri grammatik: Spørgsmål 1.1 (6%) A aaa A aa Vis at grammatikken er tvetydig ved at vise to forskellige syntakstræer for samme tegnfølge. Spørgsmål 1.2 (9%) Lav en entydig grammatik for det samme sprog som ovenstående grammatik. Vink: Argumenter for, at produktionen A aaa kan erstattes med A AaA, og eliminer derefter tvetydighed som for regneudtryk. Opgave 2: Automater og regulære udtryk (20%) Betragt følgende sprog: Følger af cifrene 0 og 1, hvor det sidste ciffer forekommer mindst en gang tidligere i følgen, som f.eks. 010, 1101 og 1010 (men ikke f.eks. 1 eller 1110). Spørgsmål 2.1 (6%) Lav et regulært udtryk for sproget. Spørgsmål 2.2 (14%) Lav et DFA for sproget. Hvis DFA en laves direkte (uden at konvertere det regulære udtryk), så forklar kort logikken i konstruktionen. Vink: Tænk over den information, hver tilstand skal holde styr på.

Skriftlig eksamen onsdag d. 19. april 2006 i Oversættere side 2 af 4 Opgave 3: Syntaksanalyse (17%) Funktionerne Nullable og FIRST beskriver hhv. hvorvidt en følge af grammatiske symboler kan afledede den tomme tegnfølge og hvilke tegn eventuelle afledte tegnfølger kan starte med. Vi kan på lignende måde definere to nye funktioner Oneable og SECOND, hvor Oneable(α) er sand hvis og kun hvis α kan aflede en tegnfølge af længde 1, og SECOND(α) er mængden af tegn, der kan forekomme som nummer to tegn i tegnfølger, som α kan aflede. Spørgsmål 3.1 (7%) Lav ligninger for Oneable på samme måde som ligningerne for Nullable i algoritme 3.4 i Basics of Compiler Design. Du kan bruge Nullable i din definition. Spørgsmål 3.2 (10%) Lav ligninger for SECOND på samme måde som ligningerne for FIRST i algoritme 3.5 i Basics of Compiler Design. Du kan bruge Nullable, Oneable og FIRST i din definition. Opgave 4: Kodegenerering (16%) Kapitel 6 i Basics of Compiler Design bruger en mellemkode, hvor alle operationer sker på navngivne mellemkodevariabler. Et ofte brugt alternativ er stakbaseret mellemkode, hvor operationer sker på de øverste elementer af en stak. En sådan mellemkode kan have (bl.a.) følgende instruktioner: Instruction Const num Instruction Push id Instruction unop Instruction binop Instruction Call functionid Betydningen af instruktionerne er som følger:

Skriftlig eksamen onsdag d. 19. april 2006 i Oversættere side 3 af 4 Const n Push x unop binop Læg værdien n ovenpå stakken. Læg indholdet af variablen x ovenpå stakken. Erstat staktoppen med resultatet af unop anvendt på staktoppen. Fjern de to øverste elementer fra stakken, anvend binop på dem (med øverste element som andet argument) og læg resultatet tilbage på stakken. Call f Kald funktionen f. f tager sine argumenter fra de øverste elementer af stakken (sidste argument øverst) og lægger sit resultat i stedet. Bemærk, at en instruktion fjerner alle sine argumenter fra stakken og lægger sit resultat oven på den reducerede stak. Et kald til en funktion med tre argumenter vil f.eks. fjerne de tre øverste elementer fra stakken og vil ved retur lægge sit resultat oven på denne mindre stak. Vi vil bruge denne stakbaserede mellemkode i denne og de to følgende opgaver. Spørgsmål 4.1 (16%) Vis oversættelsesskemaer i stil med figur 6.3 i Basics of Compiler Design for udtrykssproget fra figur 6.2 i samme. Nettoeffekten af beregningen af et udtryk skal være at lægge dets resultat på toppen af stakken. Vink: Du har ikke brug for place atttributten, men ftable og vtable skal bevares. Opgave 5: Registerallokering (19%) Når man skal generere maskinkode fra den stakbaserede mellemkode fra opgave 4, skal man gemme stakelementerne i registre. Spørgsmål 5.1 (9%) Skitser, hvordan stakelementer tildeles registre, og hvordan en stakinstruktion oversættes til en maskinkodeinstruktion, der bruger registre. Du skal ikke beskrive oversættelsen af hver enkelt instruktion, men blot forholde dig til invarianten om, at en instruktion tager sine argumenter fra de n øverste stakelementer og bagefter lægger sit resultat ovenpå den reducerede stak. Du kan antage, at stakken er tom ved starten af udtrykket, at der er registre nok, samt at koden er ren udtryksberegning uden hop eller funktionskald. Du kan

Skriftlig eksamen onsdag d. 19. april 2006 i Oversættere side 4 af 4 bruge registre fra nummer 0 og op uden øvre grænse (og register 0 er ikke konstant lig 0). Spørgsmål 5.2 (10%) Hvis der ikke er registre nok til alle stakelementer, skal man spill e nogle af stakelementerne. Skitser, hvordan dette kan gøres. Opgave 6: Funktionskald (13%) Vi tilføjer til stakmaskinen fra opgave 4 instruktionen Pop x, som fjerner staktoppen og lægger værdien i variablen x. Når der er funktionskald, vil stakken indeholde både funktionens parametre og (under disse) evt. også mellemresultater fra det udtryk, hvori funktionskaldet indgår. Funktionens krop antager, at argumenterne ligger i navngivne variabler (som hentes med Push instruktioner), så argumenterne flyttes først fra stakken til variablerne med hjælp af Pop instruktioner. Derefter beregnes kroppen af funktionen, så dennes resultat lægges på stakken (som generelt ved beregning af udtryk). Dermed overholdes invarianten om, at nettoeffekten af et funktionskald er at fjerne argumenterne fra stakken og lægge resultatet på den reducerede stak. Men det giver et problem for registerallokeringen fra spørgsmål 6.2: Antagelsen om, at evaluering af udtryk starter fra en tom stak gælder ikke. Desuden kan en funktion ikke vide i hvilke registre, dens parametre ligger, da det afhænger af hvor mange elementer, der ligger på stakken under parametrene. Spørgsmål 6.1 (13%) Skitser, hvordan man kan lave en kaldsekvens/prolog/epilog, der sørger for, at hver funktion kan registerallokere sine parametre og sin stak startende fra register 0. Du behøver ikke tage højde for returadressen eller allokering af de navngivne variabler, kun beregningsstakken og parametrene. Vink: Det er nemmest med en ren caller-saves strategi.