construção de compiladores período especial aula 11 ... · aula 11: chamadas de procedimento...

57
Sintaxe Nomenclatura Tradução Execução Projeto Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR 2020 Bruno Müller Junior Departamento de Informática UFPR Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Upload: others

Post on 13-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Construção de CompiladoresPeríodo Especial

Aula 11: Chamadas de ProcedimentoParâmetros passados por Valor

Bruno Müller Junior

Departamento de InformáticaUFPR

2020

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 2: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Sintaxe

A passagem de parâmetros é alvo das regras 14 e 15.Exemplo: procedure p(x:integer; var y:integer);

Onde x é passado por valor e y por referência.Esta aula explica a passagem de parâmetros por valor. Apróxima irá explicar a passagem por referência.

12. <declara procedimento> ::= <identificador> [<parâmetros formais>] ;<bloco>

14. <parâmetros formais> ::= (<seção parâmetros formais>; <seção parâmetros formais> )

15. <seção parâmetros formais> ::= [VAR] <listaIds> : <ident>20. <chamada deprocedimento> ::= <identificador> [(<lista de expressóes>)]

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 3: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Nomenclatura

Para efeito de diferenciação do momento em que são usados,os parâmetros de um procedimento recebem nomes diferentes:parâmetros formais variáveis no cabeçalho de um

procedimento ou de uma função.parâmetros reais variáveis ou constantes que aparecem na

chamada dos procedimentos ou das funções.

Existem duas formas de se passar os parâmetros reais para osparâmetros formais: por valor ou por referência.

por valor o valor contido no parâmetro real é copiado parao espaço de memória reservado ao parâmetroformal.

por referência o endereço do parâmetro real é copiado para oparâmetro formal.

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 4: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Nomenclatura

Para efeito de diferenciação do momento em que são usados,os parâmetros de um procedimento recebem nomes diferentes:parâmetros formais variáveis no cabeçalho de um

procedimento ou de uma função.parâmetros reais variáveis ou constantes que aparecem na

chamada dos procedimentos ou das funções.Existem duas formas de se passar os parâmetros reais para osparâmetros formais: por valor ou por referência.

por valor o valor contido no parâmetro real é copiado parao espaço de memória reservado ao parâmetroformal.

por referência o endereço do parâmetro real é copiado para oparâmetro formal.

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 5: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Tradução

O último parâmetro estásempre no deslocamentok-4, o penúltimo em k-5 eassim por diante.

procedure p(x:integer;var y:integer);

y: k-4x: k-5.

TS: PF=VS + tipo depassagem (valor oureferência).

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 6: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Tradução

O último parâmetro estásempre no deslocamentok-4, o penúltimo em k-5 eassim por diante.procedure p(x:integer;var y:integer);

y: k-4x: k-5.

TS: PF=VS + tipo depassagem (valor oureferência).

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 7: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Tradução

O último parâmetro estásempre no deslocamentok-4, o penúltimo em k-5 eassim por diante.procedure p(x:integer;var y:integer);

y: k-4x: k-5.

TS: PF=VS + tipo depassagem (valor oureferência).

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 8: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 9: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPP

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 10: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPPAMEM 2

y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 11: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPPAMEM 2DSVS R00

R01:ENPR 1

p PROC [1,R01,?{}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 12: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPPAMEM 2DSVS R00

R01:ENPR 1

t PF [1,?,?]p PROC [1,R01,?{}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 13: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPPAMEM 2DSVS R00

R01:ENPR 1

t PF [1,?,int]p PROC [1,R01,?{}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 14: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPPAMEM 2DSVS R00

R01:ENPR 1

t PF [1,-4,int]p PROC [1,R01,1{int,valor}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 15: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPPAMEM 2DSVS R00

R01:ENPR 1AMEM 1

z VS [1,0,int]t PF [1,-4,int]p PROC [1,R01,1{int,valor}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 16: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPPAMEM 2DSVS R00

R01:ENPR 1AMEM

z VS [1,0,int]t PF [1,-4,int]p PROC [1,R01,1{int,valor}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 17: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPP R02: NADAAMEM 2 CRVL 0,1DSVS R00 ARMZ 1,0

R01:ENPR 1 CRVL 1,0AMEM 1 CRVL 1,-4CRVL 1,-4 MULTCRCT 1 ARMZ 0,1CMMADSVF R03CRVL 1,-4CRCT 1SUBTCHPR R01,1DSVS R02 <======????

R03:NADACRCT 1ARMZ 0,1

z VS [1,0,int]t PF [1,-4,int]p PROC [1,R01,1{int,valor}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 18: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPP R02: NADAAMEM 2 CRVL 0,1DSVS R00 ARMZ 1,0

R01:ENPR 1 CRVL 1,0AMEM 1 CRVL 1,-4CRVL 1,-4 MULTCRCT 1 ARMZ 0,1CMMA DMEM 1DSVF R03CRVL 1,-4CRCT 1SUBTCHPR R01,1DSVS R02

R03:NADACRCT 1ARMZ 0,1

z VS [1,0,int]t PF [1,-4,int]p PROC [1,R01,1{int,valor}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 19: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPP R02: NADAAMEM 2 CRVL 0,1DSVS R00 ARMZ 1,0

R01:ENPR 1 CRVL 1,0AMEM 1 CRVL 1,-4CRVL 1,-4 MULTCRCT 1 ARMZ 0,1CMMA DMEM 1DSVF R03 RTPR 1,1CRVL 1,-4CRCT 1SUBTCHPR R01,1DSVS R02

R03:NADACRCT 1ARMZ 0,1

t PF [1,-4,int]p PROC [1,R01,1{int,valor}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 20: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPP R02: NADAAMEM 2 CRVL 0,1DSVS R00 ARMZ 1,0

R01:ENPR 1 CRVL 1,0AMEM 1 CRVL 1,-4CRVL 1,-4 MULTCRCT 1 ARMZ 0,1CMMA DMEM 1DSVF R03 RTPR 1,1CRVL 1,-4 R00:NADACRCT 1 LEITSUBT ARMZ 0,0CHPR R01,1 CRVL 0,0DSVS R02 CHPR R01,0

R03:NADA CRVL 0,0CRCT 1 IMPRARMZ 0,1 CRVL 0,1

IMPRDMEM 2PARA

p PROC [1,R01,1{int,valor}]y VS [0,1,int]x VS [0,0,int]

Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 21: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

INPP R02: NADAAMEM 2 CRVL 0,1DSVS R00 ARMZ 1,0

R01:ENPR 1 CRVL 1,0AMEM 1 CRVL 1,-4CRVL 1,-4 MULTCRCT 1 ARMZ 0,1CMMA DMEM 1DSVF R03 RTPR 1,1CRVL 1,-4 R00:NADACRCT 1 LEITSUBT ARMZ 0,0CHPR R01,1 CRVL 0,0DSVS R02 CHPR R01,0

R03:NADA CRVL 0,0CRCT 1 IMPRARMZ 0,1 CRVL 0,1

IMPRDMEM 2PARA Símb. Cat. Infos

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 22: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Execução

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 23: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Principal

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

03 ?302 ?201 ?100 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ??04 ??03 ??02 ??01 ??00 ??

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 24: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Principal

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

03 ?302 ?201 ?100 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ??04 ??03 ??02 ??01 ??00 ??

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 25: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Principal

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

03 ?302 ?201 ?100 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ??04 ??03 ??02 ??01 ??00 ??

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 26: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Principal

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x);write (x,y)

end.

03 ?302 ?201 ?100 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ??04 ??03 ??02 ??01 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 27: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Principal

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.CRVL 0,0CHPR rot,k { M[s+1]:=i;

M[s+2]:=k;s:=s+2i:=rot}

03 ?302 ?201 ?100 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ??04 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 28: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

ENPR k { s:=s+1;M[s]:=D[k]D[k]:=s+1 }

03 ?302 ?201 0600 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 29: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 0600 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 30: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1);else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 0600 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 31: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.CRVL 0,0 / CRCT 1 / SUBTCHPR rot,k { M[s+1]:=i;

M[s+2]:=k;s:=s+2i:=rot}

03 ?302 ?201 0600 00

14 ??13 ??12 ??11 ??10 ??09 0108 2©07 0206 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 32: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

ENPR k { s:=s+1;M[s]:=D[k]D[k]:=s+1 }

03 ?302 ?201 1100 00

14 ??13 ??12 ??11 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 33: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1100 00

14 ??13 ??12 ??11 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 34: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1100 00

14 ??13 ??12 ??11 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 35: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.CRVL 0,0 / CRCT 1 / SUBTCHPR rot,k { M[s+1]:=i;

M[s+2]:=k;s:=s+2i:=rot}

03 ?302 ?201 1100 00

14 0113 2©12 0111 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 36: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

ENPR k { s:=s+1;M[s]:=D[k]D[k]:=s+1 }

03 ?302 ?201 1600 00

14 0113 2©12 0111 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 11

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 37: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1600 00

14 0113 2©12 0111 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 11

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 38: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1600 00

14 0113 2©12 0111 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 ??00 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 11

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 39: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1600 00

14 0113 2©12 0111 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 0100 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 11

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 40: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1600 00

14 0113 2©12 0111 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 0100 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 0115 11

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 41: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

p(3) -> p(2) -> p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1600 00

14 0113 2©12 0111 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 0100 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 0115 11

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 42: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

DMEM 1RTPR k,n { D[K]:=M[s];

i:=M[s-2];s:=s-(n+3)}

03 ?302 ?201 1100 00

14 ??13 ??12 ??11 ??10 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 0100 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 43: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1100 00

14 ??13 ??12 ??11 0110 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 0100 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 44: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 1100 00

14 ??13 ??12 ??11 0110 0609 0108 2©07 0206 ??05 ?104 0003 1©02 0301 0200 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 45: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

DMEM 1RTPR k,n { D[K]:=M[s];

i:=M[s-2];s:=s-(n+3)}

03 ?302 ?201 0600 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ?104 0003 1©02 0301 0200 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 46: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 0600 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 0205 ?104 0003 1©02 0301 0200 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 47: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 0600 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 0205 ?104 0003 1©02 0301 0600 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 48: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

DMEM 1RTPR k,n { D[K]:=M[s];

i:=M[s-2];s:=s-(n+3)}

03 ?302 ?201 ?100 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ??04 ??03 ??02 ??01 0600 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 49: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ?302 ?201 ?100 00

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ??04 ??03 ??02 ??01 0600 03

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 50: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

princ <- p(3) <- p(2) <- p(1)

program proc2 (input, output);var x, y: integer;

procedure p(t:integer);var z:integer;

beginif (t>1)

then p(t-1); 2©else y:=1;

z:= y;y:=z*t;

endbegin

read(x);p(x); 1©write (x,y)

end.

03 ??02 ??01 ??00 ??

14 ??13 ??12 ??11 ??10 ??09 ??08 ??07 ??06 ??05 ??04 ??03 ??02 ??01 ??00 ??

29 ??28 ??27 ??26 ??25 ??24 ??23 ??22 ??21 ??20 ??19 ??18 ??17 ??16 ??15 ??

44 ??43 ??42 ??41 ??40 ??39 ??38 ??37 ??36 ??35 ??34 ??33 ??32 ??31 ??30 ??

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 51: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Acrescente a chamada de procedimentos com parâmetrospassados por valor ao compilador.

No exemplo apresentado nesta aula, só há um parâmetro.Quando houverem mais parâmetros, determinar o endereçoléxico é um pouco mais complicado, pois o último parâmetro équem será associado ao endereço léxico (k-4) Por exemplo:

procedure p(a,b:integer), a⇒ (k ,−5), b⇒ (k,−4)procedure q(a,b,c:integer), a⇒ (k,−6), b⇒ (k,−5),c⇒ (k,−4)

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 52: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Acrescente a chamada de procedimentos com parâmetrospassados por valor ao compilador.No exemplo apresentado nesta aula, só há um parâmetro.

Quando houverem mais parâmetros, determinar o endereçoléxico é um pouco mais complicado, pois o último parâmetro équem será associado ao endereço léxico (k-4) Por exemplo:

procedure p(a,b:integer), a⇒ (k ,−5), b⇒ (k,−4)procedure q(a,b,c:integer), a⇒ (k,−6), b⇒ (k,−5),c⇒ (k,−4)

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 53: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Acrescente a chamada de procedimentos com parâmetrospassados por valor ao compilador.No exemplo apresentado nesta aula, só há um parâmetro.Quando houverem mais parâmetros, determinar o endereçoléxico é um pouco mais complicado, pois o último parâmetro équem será associado ao endereço léxico (k-4) Por exemplo:

procedure p(a,b:integer), a⇒ (k,−5), b⇒ (k,−4)procedure q(a,b,c:integer), a⇒ (k,−6), b⇒ (k,−5),c⇒ (k,−4)

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 54: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Acrescente a chamada de procedimentos com parâmetrospassados por valor ao compilador.No exemplo apresentado nesta aula, só há um parâmetro.Quando houverem mais parâmetros, determinar o endereçoléxico é um pouco mais complicado, pois o último parâmetro équem será associado ao endereço léxico (k-4) Por exemplo:

procedure p(a,b:integer), a⇒ (k ,−5), b⇒ (k,−4)

procedure q(a,b,c:integer), a⇒ (k,−6), b⇒ (k,−5),c⇒ (k,−4)

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 55: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Acrescente a chamada de procedimentos com parâmetrospassados por valor ao compilador.No exemplo apresentado nesta aula, só há um parâmetro.Quando houverem mais parâmetros, determinar o endereçoléxico é um pouco mais complicado, pois o último parâmetro équem será associado ao endereço léxico (k-4) Por exemplo:

procedure p(a,b:integer), a⇒ (k ,−5), b⇒ (k,−4)procedure q(a,b,c:integer), a⇒ (k ,−6), b⇒ (k,−5),c⇒ (k,−4)

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 56: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Página para anotações

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor

Page 57: Construção de Compiladores Período Especial Aula 11 ... · Aula 11: Chamadas de Procedimento Parâmetros passados por Valor Bruno Müller Junior Departamento de Informática UFPR

Sintaxe Nomenclatura Tradução Execução Projeto

Licença

Slides desenvolvidos somente com software livre:LATEX usando beamer;Inkscape.

Licença:Creative Commons Atribuição-Uso Não-Comercial-Vedada aCriação de Obras Derivadas 2.5 Brasil License. http://creativecommons.org/licenses/by-nc-nd/2.5/br/

Bruno Müller Junior Departamento de Informática UFPR

Construção de Compiladores Período Especial Aula 11: Chamadas de Procedimento Parâmetros passados por Valor