Supote à Execução Compiladoe Ambiente de upote à execução O Compilado gea código executável. Ma nem tudo etá conhecido ante que o pogama eja executado! Valoe de paâmeto e funçõe, Memóia dinamicamente alocada, Dependendo do númeo de chamada, qual endeeço ua paa acha o início de cada execução de um pocedimento? Etc... É pecio de um conjunto de otina (un-time uppot package) caegado junto com o código objeto geado Pocedimento O comando ão oganizado em pocedimento: declaação com um nome aociado que ealiza uma dada taefa definição: nome vaiávei copo Pocedimento em ação (ativação) Fluxo de contole: execução eqüencial (eqüência de pao) começa no início do copo temina no final do copo tempo de vida: eqüência de pao executado chamada de pocedimento: devio de execução etona o contole paa o ponto imediatamente apó o ponto de chamada Exemplo: o Quickot pogam ot(input, output); va a : aay [0..10] of intege; pocedue eadaay; va i: intege; begin fo i:=1 to 9 do ead(a[i]); end; function patition(y, z: intege): intege; va i, j, x, v: intege; begin... end; pocedue quickot(m, n: intege); va i: intege; begin if ( n > m) then begin i:= patition(m, n); quickot(m, i-1); quickot(i+1, n); end; end; begin a[0] := -9999; a[10]:= 9999; eadaay; quickot(1, 9); end. Ávoe de Ativação Cada nó epeenta uma ativação de um pocedimento A aiz epeenta a ativação do pogama pincipal O nó de a é pai de b e e omente e o fluxo de contole muda de a paa b O nó de a etá à equeda de b e e omente e a vida de a ocoe ante de b 1
execution begin Ávoe de ativação execution begin Ávoe de ativação execution begin Ávoe de ativação execution begin ente quickot(1, 9) Ávoe de ativação execution begin ente quickot(1, 9) ente patition(1, 9) Ávoe de ativação execution begin ente quickot(1, 9) ente patition(1, 9) leave patition(1,9) Ávoe de ativação 2
Ávoe de ativação Ávoe de ativação execution begin ente quickot(1, 9) ente patition(1, 9) leave patition(1,9) ente quickot(1,3) execution begin ente quickot(1, 9) ente patition(1, 9) leave patition(1,9) ente quickot(1,3)... leave quickot(5, 9) q(5,9) p(5,9) q(5,5) q(7,9) p(7,9) q(7,7) q(9,9) p(2,3) q(2,1) q(3,3) Ávoe de ativação Ávoe de ativação execution begin ente quickot(1, 9) ente patition(1, 9) leave patition(1,9) ente quickot(1,3)... leave quickot(5, 9) leave quickot(1,9) q(5,9) p(5,9) q(5,5) q(7,9) p(7,9) q(7,7) q(9,9) p(2,3) q(2,1) q(3,3) execution begin ente quickot(1, 9) ente patition(1, 9) leave patition(1,9) ente quickot(1,3)... leave quickot(5, 9) leave quickot(1,9) execution teminated q(5,9) p(5,9) q(5,5) q(7,9) p(7,9) q(7,7) q(9,9) p(2,3) q(2,1) q(3,3) Pilha de contole Oganização de Memóia O fluxo de contole coeponde a uma buca em pofundidade na ávoe de ativação Ua-e uma pilha paa contola a ativaçõe de pocedimento ativo Como a memóia do pogama é amazenada? código objeto geado; epaço paa vaiávei globai Núcleo áea etática pilha paa ativação de pocedimento Pilha epaço paa memóia dinâmica (heap). HEAP Texto 3
Alocação de memóia Alocação etática: eeva de memóia é feita duante a compilação, de foma etática. Tipo (ou compimento) do dado é conhecido em tempo de compilação Compimento não é modificado duante a execução do pogama Núcleo Pilha Alocação de memóia Alocação dinâmica (HEAP): etutua de dado efeenciada atavé de ponteio, a áea também ão eevada dinamicamente. áea ão alocada e libeada, ob o contole do pogama(do) alocada na áea de "heap", que cece no entido contáio ao da pilha. Núcleo Pilha HEAP Texto HEAP Texto Alocação de memóia Regito de Ativação Alocação em pilha (STACK): Áea paa dado locai de pocedimento (ubotina ou funçõe): devem e alocada dinamicamente. A alocação de epaço de memóia omente pode e ealizada em tempo de execução, poque a odem de chamada é deteminada pela execução do pogama. Áea ão alocada numa etutua em pilha de ativação de pocedimento Libeação quando etona! Na pilha entam (e aem) egito de ativação. valo etonado paâmeto efetivo ponteio de contole ponteio de aceo etado da CPU vaiávei locai tempoáio podem e paado ou etonado em egitadoe (paa maio eficiência) aponta paa o egito de ativação da otina chamadoa aponta paa dado não-locai, amazenado em outo egito de ativação "pogam counte e egitadoe Ob: pode-e ua egitadoe paa algun do campo! fp p Ponteio de Aceo egito de ativação da otina chamadoa paâmeto e valoe etonado apontadoe de contole e etado da máquina vaiávei locai e tempoáio avaliado pela otina chamadoa alguma infomaçõe ão peenchida pela otina chamadoa áea uada pela otina chamada 2 ponteio: fame_pointe (fp): aponta paa o egito de ativação coente tack_pointe (p): topo da pilha de egito de ativação Código de Chamada otina chamadoa: avalia o paâmeto efetivo e o coloca na pilha Regitadoe em uo pelo chamado ão alvo em memóia amazena o endeeço de etono e o valo antigo do fame_pointe no egito de ativação da otina chamada e atualiza o valo do fame_pointe; otina chamada: alva valoe de egitadoe e outa infomaçõe do etado da máquina; inicializa vaiávei locai e começa ua execução. 4
Código de Retono Seqüência de chamada otina chamada: amazena o valo de etono logo apó o egito de ativação da otina chamadoa; etaua o apontado topo_a e o egitadoe da máquina e devia paa o endeeço de etono dento da otina chamadoa; otina chamadoa: copia o valo etonado no eu pópio egito de ativação Topo Topo valo etono e paâmeto Ponteio e Etado Tmp / dado locai valo etono e paâmeto Ponteio e Etado Tmp / dado locai Regito Ativação chamado Regito Ativação chamado Seqüência de chamada valo etono e paâmeto Ponteio e Etado Tmp / dado locai valo etono e paâmeto Ponteio e Etado Sob eponabilidade do chamado Seqüência de etono O chamado coloca um valo de etono no devido luga... Ou eja, logo depoi do egito do chamado! Recupea o antigo valo de topo no campo de etado E também o outo egitadoe... Devia paa o antigo PC Topo Tmp / dado locai Sob eponabilidade do chamado Impotante: o chamado ainda pode acea o que etá acima de topo... Quetão: o que etá nete luga? Paagem de Paâmeto Paagem de paâmeto po valo Método mai imple de paagem de paâmeto Paâmeto ão avaliado, e eu valoe ão paado paa o pocedimento chamado. Implementação: um paâmeto fomal é tatado exatamente como um nome local, de maneia que a memóia paa o paâmeto fomai é eevada no egito de ativação do pocedimento chamado; o pocedimento chamado avalia o paâmeto eai e amazena eu valoe na memóia eevada paa o paâmeto fomai. Paagem de Paâmeto Paagem de paâmeto po endeeço pocedimento chamado paa o endeeço de cada paâmeto eal. e um paâmeto eal é: Identificado: eu endeeço é paado; Expeão: expeão é avaliada num tempoáio, e o endeeço dee tempoáio é paado; Refeência a paâmeto fomai, no pocedimento chamado, ão feita de foma indieta. 5
Póxima aula... Fim do upote ao untime: Paagem de paâmeto Ecopo de vaiável Tabela de ímbolo com ecopo... 6