Runtimesystemer Kap 7 - I

Like dokumenter
Runtimesystemer Kap 7 - I

Runtime-omgivelser Kap 7 - I

Anatomien til en kompilator - I

Anatomien til en kompilator - I

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 2.6, 2.7)

Runtimesystemer - II. Funksjoner som parametere. Virtuelle metoder

Runtime-omgivelser Kap 7 - II

Runtimesystemer - II. Parameteroverføring Call by value Call by reference Call by value-result Call by name INF 3110/ INF

Dagens tema: Kjøresystemer II

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Semantisk Analyse del III

UNIVERSITETET I OSLO

Datatyper og typesjekking

Programmeringsspråket C Del 3

Datatyper og typesjekking

Programmeringsspråket C Del 3

Datatyper og typesjekking

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

2012 2a. C rc; void main() { rc = new C (); rc.m2(); } } INF 3110/ INF /28/13 1

UNIVERSITETET I OSLO

Datatyper og typesjekking

Litt om Javas class-filer og byte-kode

MED SVARFORSLAG UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

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

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Diverse eksamensgaver

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Kap 6.4: Typesjekking Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 19. og 23. mars Dagens tema: Typer og typesjekking

Kap. 8 del 1 kodegenerering INF5110 Vår2007

Skal bindes opp til en deklarasjon av samme navn

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

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

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

Generiske mekanismer i statisk typede programmeringsspråk

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder.

Objekter og referanser

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

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

Kap 6.3: Symboltabellen Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 17. mars Dagens tema:

Kap. 8 del 1 kodegenerering INF april, 2008

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

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

INF225 høsten 2003 Prosjekt del 4: kodegenerering

INF april, 2013 Kap. 8 Noen oppgaver som er meget relevante for Oblig 2

Skal bindes opp til en deklarasjon av samme navn

Stack. En enkel, lineær datastruktur

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

Dagens tema. LC-2 LC-2 er en «ekstrem-risc»; den har 16 instruksjoner og 3 adresseringsmåter.

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

INF Algoritmer og datastrukturer

Programmeringsspråket C Del 2

INF Algoritmer og datastrukturer

Hjemmeeksamen 2 i INF3110/4110

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering

Vektorer. Dagens tema. Deklarasjon. Bruk

INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt

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

Forelesning ISA: IJVM Kap 4.2

INF og 13. april, Stein Krogdahl, Ifi UiO

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

Med Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

Programmeringsspråket C Del 3. Hans Petter Taugbøl Kragset

UNIVERSITETET I OSLO

Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt

Del 1 En oversikt over C-programmering

IN 147 Program og maskinvare

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

UNIVERSITETET I OSLO

INF1000: Forelesning 7

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

UNIVERSITETET I OSLO

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Forelesning Adresseringsmodi Kap 5.4

UNIVERSITETET I OSLO

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen

Øving 1: Busser, adressemodi, multiplekser og styreord

INF mai 2014 Stein Krogdahl, Ifi, UiO

Tildeling av minne til prosesser

Forelesning Instruksjonstyper Kap 5.5

Et eksempel: Åtterspillet

Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering

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

Transkript:

Runtimesystemer Kap 7 - I Generell lagerorganisering (7.1) Språk som bare trenger statisk allokering (7.2) Språk som trenger stakk-orientert allokering (7.3) Språk som trenger mer generell allokering (7.4) Parameteroverføring (7.5) Avhenger av begrepene i språk 28/03/14 1

Den oversatte programkoden kan nesten altid betraktes som statisk allokert skal hverken flyttes eller forandres under utførelse Kompilatoren kjenner alle adresser til kodebiter Men husk Koden blir ofte produsert som relokerbare kode, som får sin endelige plassering av linker/ loader 28/03/14 2

Lagerorganisering Typisk organisering under utførelse dersom et programmeringsspråk har alle slags data (statisk, stakk, dynamisk) Typisk organisering av data for et prosedyrekall (aktiveringsblokk) Det er gjerne ut fra plasseringen her man karakteriserer språk til være statisk organisert stakk-organisert heap/dynamisk organisert 28/03/14 3

7.2 STATISK ORGANISERING 28/03/14 4

Full statisk organisering (eks. Fortran) Kompilatoen kan beregne hvor alt ligger Utførbar kode Variable Alle slags hjelpedata bl.a. alle slags større konstanter i programmet 28/03/14 5

Et eksempel i Fortran Plass til mellomresultater o.l. Kompilatoren kan beregne hvor mye som trengs I Fortran overføres parametere som pekere til de aktuelle verdier/variable 28/03/14 6

7.2 STAKK-ORGANISERING 28/03/14 7

Et eksempel i C Aktiverings-blokkene organiseres som en stakk. return address program-adressen man er kalt fra control link angir kallerens fp ( dynamisk link ) fp - frame pointer peker på fast sted i den aktuelle aktiveringsblokkken sp -stack pointer angir grensen mellom brukt og ledig lagerareal 28/03/14 8

Variabel-aksess Blir én global variabel bare synlig fra f Layout av g sin aktiveringsblok: parameter 28/03/14 9

Arrayer av kjent (statisk) lengde Layout av aktiveringsblokk: Relativ-adresser A[i] beregnes som adressen (-24 + 2*i)(fp) Aksess av c og y: c: 4(fp) y: -32(fP) kan ofte gjøres i én instruksjon 28/03/14 10

28/03/14 11

Hvordan utføre et kall Ved prosedyrekall (entry) Ved prosedyre-exit cl:= fp; fp:= sp; set return addr allocate locals by changing sp sp:= fp; fp:= cl; deallocate by changing sp 28/03/14 12

Gjennomføring av et kall - I før kall på g push parameter push fp 28/03/14 13

Gjennomføring av et kall II 1. fp = sp 2. Push returadressse alloker lokal var (y) 28/03/14 14

Behandling av mellomresultater adresse verdi verdi Antar strikt beregning fra venstre mot høyre. Kallet f(j) kan forandre verdier. Trenger ikke sette av fast maksimal plass til slike mellomresultater for hele blokkens levetid. I modsetning til hva man naturlig gjør i Fortran. i/k 28/03/14 15

Data av variabel lengde variabel betyr at data ikke har samme størrelse ved hvert kall i: integer A[i] beregnes som @6(fp) + 2*i antar at A overføres ved full kopiering Fast lengde I Java legges disse på heapen 28/03/14 16

Mulig plassallokering ved indre blokker 28/03/14 17

Prosedyrer inne i prosedyrer Hvordan kan vi aksessere n i p under utførelse av q? Et første forsøk: 28/03/14 18

Det første forsøk Vi trenger noe ekstra (aksess-link/statisk link) INF 3110/4110-2004 28/03/14 INF 5110-2014 Går altid til aktuell utgave av tekstlig omgivelse 19

Eksempel med flere nivåer Programblokkene får da et blokk-nivå 0 1 2 KV display.. fp.al.al.x diff i blokknivå 28/03/14 20

Implementasjon av fp.al.al.al.... al.x Antar at fp ligger fast i et register 4(fp) 4(reg)... 4(reg) -> reg -> reg -> reg X kan nå aksesseres som 6(reg) diff i blokknivå fp x al al al al Ofte ikke så mange blokknivåer 28/03/14 21

Videre utførelse Hvordan skaffe acces-link ved kall? Kalleren vet hvor den er, og utfører ny aksess-link = fp.al.al... (så mange som nivåforskjellen er) 28/03/14 22

Hva om vi skal ha access-link? Ved prosedyrekall (entry) Ved prosedyre-exit 1. Beregn ny aksess-link som ny-al = fp.al.al... (tilsvarende diff. i blokknivå mellom den kalte og kalleren er 0 om den kalte er lokal i kalleren) 2. Push ny-al på stakken + aksess-link 28/03/14 23