Construção de Compiladores Aula 12

Propaganda
Introdução
Instruções Novas
Construção de Compiladores
Aula 12 - Chamadas de Procedimento
Parâmetros passados por Referência
Bruno Müller Junior
Departamento de Informática
UFPR
18 de Setembro de 2014
Bruno Müller Junior
Departamento de Informática UFPR
Construção de Compiladores Aula 12 - Chamadas de Procedimento Parâmetros passados por Referência
Introdução
Instruções Novas
1 Introdução
2 Instruções Novas
Exemplo de passagem de Parâmetros por referência
Bruno Müller Junior
Departamento de Informática UFPR
Construção de Compiladores Aula 12 - Chamadas de Procedimento Parâmetros passados por Referência
Introdução
Instruções Novas
Introdução
Na passagem de parâmetro por referência, o parâmetro real
OBRIGATORIAMENTE é uma variável;
Em tempo de execução, o endereço desta variável é colocado
no espaço reservado ao parâmetro formal correspondente;
Identifica-se um parâmetro passado por referência pelo uso da
palavra reservada VAR à frente do parâmetro formal
correspondente.
Bruno Müller Junior
Departamento de Informática UFPR
Construção de Compiladores Aula 12 - Chamadas de Procedimento Parâmetros passados por Referência
Introdução
Instruções Novas
Instruções Novas
As novas instruções tratam parâmetros formais por referência.
Em tempo de execução, estes endereços léxicos indicados
contém endereços físicos das variáveis-alvo.
Instrução
CRVI k,n
RTPR k,n
CREN k,n
Bruno Müller Junior
Ação
M[M[D[k]+n]]:=M[s];
s:=s+1
i:=i+1
M[s]:=M[M[D[k]+n]]
i:=M[s-2]
i:=i+1
s:=s+1
M[s]:=D[k]+n]
i:=i+1
Significado
Carrega Valor
Indireto
Armazena Valor
Indireto
Carrega
Endereço
Departamento de Informática UFPR
Construção de Compiladores Aula 12 - Chamadas de Procedimento Parâmetros passados por Referência
Introdução
Instruções Novas
Exemplo de passagem de Parâmetros por referência
Exemplo de passagem de Parâmetros por referência
1
2
3
4
5
6
7
8
9
program proc3 (input, output);
var k: integer;
procedure p(n:integer; var g:integer);
var h:integer;
begin
if (v<2)
then g:=g+1
else
begin
p(n-1,h) 1 ;
g:=h;
10
11
p(n-2,g) 2
12
13
14
15
16
17
end
write (n,g)
end
begin
k:=0;
p(3,k) 3 ;
18
19
end.
Bruno Müller Junior
Departamento de Informática UFPR
Construção de Compiladores Aula 12 - Chamadas de Procedimento Parâmetros passados por Referência
Download