A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho,

Apresentações semelhantes


Apresentação em tema: "V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho,"— Transcrição da apresentação:

1 V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho, Sethi e Ullman – capítulo 7 LFA 1999/2000 - 1Jorge Morais

2 Chamada de funções Chamada duma função: passagem de controlo para a função (execução do corpo da função) Após a execução do corpo da função o controlo é retornado para a posição a seguir ao ponto de chamada A chamada pode ser representada na forma duma árvore e, em consequência, pode ser usada uma pilha de controlo LFA 1999/2000 - 2Jorge Morais

3 Exemplo /*chamada a função*/ f(3,6); /*definições*/ f(int x,int y) { if(x<y) f(x+1,y-1); else g(x,y); } g(int x,int y) { if(x<10) h(x); h(y); } h(int x) { printf(%d\n,x); } LFA 1999/2000 - 3Jorge Morais

4 Organização da memória Código gerado Dados estáticos Pilha e Heap A Pilha e o heap crescem em sentidos contrários: –Pilha: activação de funções –Heap: dados dinâmicos LFA 1999/2000 - 4Jorge Morais

5 Frames de activação de funções Valor de retorno Parâmetros passados Ligação de controlo opcional Ligação de acesso a dados não locais Gravação do estado da máquina Dados locais Variáveis temporárias LFA 1999/2000 - 5Jorge Morais

6 Passagem de parâmetros Chamada por valor: os valores são calculados e passados Chamada por referência: é passado o endereço onde é guardada uma variável Cópia/reposição: híbrido dos dois anteriores Chamada por nome: os nomes das variáveis são expandidos literalmente LFA 1999/2000 - 6Jorge Morais

7 Representação de código intermédio TAC (Three Address Code) Representação explícita na forma de árvores binárias Instruções duma máquina abstracta –WAM (Warrens Abstract Machine) na compilação de programas em Prolog LFA 1999/2000 - 7Jorge Morais

8 Exemplo y = x + 5 * z Em TAC: t1 = 5 * z t2 = x + t1 y = t2 Em instruções duma máquina abstracta: PUSHx PUSH #5 PUSHz MULT ADD STOREy LFA 1999/2000 - 8Jorge Morais


Carregar ppt "V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho,"

Apresentações semelhantes


Anúncios Google