2002-11-29F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

INTRODUKTION TILL PROGRAMMERING
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Algoritmer och datastrukturer
Polymorfism.
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 2
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
William Sandqvist C:s minnesmodell.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Grundläggande programmering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 1: Inledning administrativt o dyl kursens mål varför programspråksteori? språkkategorier användningsområden.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska operatorer och logiska uttryck -Referenstyper.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
Föreläsning 4 Klasser Och Objekt.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Variabler Abstraktion av en minnescell En förvaringslåda som kan beskrivas med 6 attribut –Namn.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: Rum: D438.
F6 - Pekare 1 Programmeringsteknik, 4p vt-00 Pekare & adresser Alla variabler är knutna till en viss adress i minnet int i; adressen till denna fås med.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Anders Sjögren Deklarationsområde och funktioner.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys.
Programmeringsteknik för K och Media
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Funktioner något in och något annat ut.
Lektion 4.
Python.
Genomgång av Automation Builder
Presentationens avskrift:

F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd med dynamiska länkar Implementera statisk räckvidd med  statiska länkar  displaymetoden

F. Drewes, Inst. f. datavetenskap2 Aktiveringsposter Data som bruka finnas i aktiveringsposter är bl.a. minnesutrymme till lokala variabler och parametrar statiska och/eller dynamiska länkar till andra aktiverings- poster återhoppsadressen (på vilket ställe i programmet fortsätter exekveringen när UP:s exekvering avslutats?) Data som behövs för att sköta anrop av UP lagras i aktiveringsposter (eng. activation record [instance]). =underprogram

F. Drewes, Inst. f. datavetenskap3 Exekveringsstacken När ett UP anropas placeras motsvarande aktiveringspost på stacken. När exekveringen avslutas tas aktiveringsposten bort igen. Den dynamiska länken pekar till föregående aktiverings- post (som tillhör det anropande UP:et) Den statiska länken pekar till närmaste aktiveringsposten som motsvarar den statiska föräldern På exekveringsstacken lagras aktiveringsposter som representerar de nästade anropen av aktiva UP.

F. Drewes, Inst. f. datavetenskap4 Anrop och återhopp AP sub n AP sub 1 AP main  AP sub 1 AP sub n  sub n+1 terminerar parametrar statisk länk dynamisk länk återhoppsadress lokala variabler AP main AP sub 1 AP sub n sub n anropar sub n+1 AP sub n+1 

F. Drewes, Inst. f. datavetenskap5 Dynamiska länkar Den dynamiska länken visar var den dynamiska förälderns (föregående) aktiveringspost ligger Den behövs bl.a. för att kunna ta bort den översta aktive- ringsposten vid återhopp (eftersom storleken kan variera) Kedjan som utgörs av alla dynamiska länkar och som representerar anropssekvensen kallas dynamisk kedja (eng. dynamic chain) eller anropskedja (eng. call chain)

F. Drewes, Inst. f. datavetenskap6 Implementera dynamisk räckvidd Djup access  följ anropskedjan tills en aktiveringspost har hittats som innehåller en variabel med rätt namn  lätt att implementera, snabba anrop men ineffektiv access Grund access (två varianter) a)skapa en separat stack för varje variabelnamn (inga variabler lagras på exekveringsstacken) b)skapa en separat tabell för variablerna ("globala" värden av lokala variabler lagras i aktiveringsposten så länge ett UP är aktivt)  konstant accesstid men mindre effektiva anrop Hur hittas en icke-lokal variabel vid dynamisk räckvidd?

F. Drewes, Inst. f. datavetenskap7 Statiska länkar Den statiska länken pekar på aktiveringsposten som motsvarar det senaste anropet av den statiska föräldern Statiska länkar behövs för att implementera statisk räckvidd Två möjligheter:  använd den statiska kedjan på samma sätt på vilket den dynamiska kedjan används vid dynamisk räckvidd  spara de åtkomliga statiska länkarna i en separat tabell ("display"); länkarna som inte är åtkomliga sparas temporärt i aktiveringsposterna

F. Drewes, Inst. f. datavetenskap8 Att underhålla en statisk kedja Antag att sub deklareras i sub decl och anropas i sub anr. Genom att börja med den översta aktiveringsposten och följa den statiska kedjan sd(sub anr ) – sd(sub decl ) ("nesting depth") steg hittas aktiveringsposten som den nya statiska länken måste peka på. Icke-lokala variabler hittas på samma sätt.  snabb access om d inte blir stort  sd(id)=0om id är huvudprogrammet  sd(id)=sd(sub)+1om id deklareras i UP sub Det viktigaste värdet är det statiska djupet sd(id) av en identifierare id

F. Drewes, Inst. f. datavetenskap9 Att underhålla en display Displaymetoden är ett alternativ till den statiska kedjan displayen är ett fält bestående av statiska länkar disp[0],…,disp[D] där D är det maximala statiska djupet disp[d] är länken till aktiveringsposten som motsvarar det senaste anropet av ett UP sub där sd(sub)=d Aktiveringsposten som innehåller variabeln x nås mha länken disp[sd(sub decl )] om x är deklarerad i sub decl När sub anropas placeras länken till dess aktiveringspost i disp[sd(sub)]. Det gamla värdet sparas i aktiveringsposten och återställs när sub terminerar.  konstant accesstid men lite mindre effektiva anrop

F. Drewes, Inst. f. datavetenskap10 Exempel program P; bool a,b; procedure A; bool a; begin a = true; if a  b then B end A; procedure B; begin if a then A end B; begin a = b = false; A end P. sd(P)=0 sd(A)=1 sd(B)=1 nesting depth = sd(A) – sd(A) = 0 nesting depth = sd(A) – sd(P) = 1 sd(P)=0 sd(A)=1 sd(B)=1