organização do ambiente de execução (runtime system) representação de dados avaliação de...

23
Organização do Ambiente de Execução (Runtime system) • Representação de dados • Avaliação de expressões • Alocação de memória • Rotinas • Objetos e métodos

Upload: internet

Post on 19-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Organização do Ambiente de Execução (Runtime system)

• Representação de dados

• Avaliação de expressões

• Alocação de memória

• Rotinas

• Objetos e métodos

Page 2: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Interesse Prático

• Todo programador deve ter uma idéia básica dos aspectos de eficiência de várias construções da linguagem.

• Exemplo: escolha de estruturas de dados

Page 3: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Representação de Dados

• Booleanos, Inteiros, Caracteres, Registros, Arrays etc.

• Bits, bytes, words, double words.

• Gap semântico.

Page 4: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Princípios Básicos

• Não confusão: valores diferentes de um tipo devem ter representações diferentes.

• Unicidade: cada valor (de um determinado tipo) deveria ter a mesma representação.

Page 5: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Questões Pragmáticas

• Representação em tamanho constante• Representação direta ou indireta

Page 6: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Representação de tipos primitivos

• Booleanos

• Caracteres

• Inteiros

Page 7: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Representação de Registros

type Data = record y:Integer, m: Integer, d: Integer end;

type Details = record female: Boolean, dob: Date, status: Char end;

var today: Date;var her: Details;

Page 8: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Representação de união disjunta

• Tag e parte variante

• Valor do tag determina o tipo da parte variante

• Representação matemática: T = T1 + … + Tn

• Operações: teste do tag e projeção da parte variante

Page 9: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Representação de união disjunta

• Exemplos: registros variantes em Pascal e Ada, datatypes em Haskell e ML

• type Number = record case acc: Boolean of true: (i: Integer); false: (r: Real) end;

Page 10: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Representação de Arrays

• Arrays estáticos

• Arrays dinâmicos

Page 11: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Representação de tipos recursivos

type IntList = ^IntNode;

type IntNode = record head: Integer; tail: IntList; end;

var primes: IntList;

Page 12: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Avaliação de expressões

• (a * b) + (1 – (c * 2))

• LOAD R1 aMULT R1 bLOAD R2 #1LOAD R3 cMULT R3 #2SUB R2 R3ADD R1 R2

Page 13: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Avaliação de expressões

• (a * b) + (1 – (c * 2))• LOAD a

LOAD bMULTLOADL 1LOAD cLOADL 2MULTSUBADD

Page 14: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Avaliação de expressões

• (0 < n) /\ odd(n)

• LOADL 0LOAD nLTLOAD nCALL oddAND

Page 15: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Organização do Armazenamento

• Estática

• Dinâmica (pilha e heap)

Page 16: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Alocação estática

• endereços são conhecidos em tempo de compilação, possibilitando acesso mais eficiente.

• Valores “persistem” entre chamadas diferentes a procedimentos (se usada para procedimentos).

Page 17: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Alocação estática - limitações

• tamanho dos objetos tem que ser conhecido em tempo de compilação.

• Procedimentos recursivos não são permitidos.

• Estruturas de dados não podem ser criadas dinâmicamente.

Page 18: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Organização do Armazenamento - pilha

• Uso da pilha para armazenar variáveis locais

• A pilha também para armazenar o estado do programa quando da chamada de procedimentos: valores de registradores, contador do programa etc.

Page 19: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Registros de Ativação ou frame

• empilhado no início da execução de um procedimento e desempilhado ao final.

Page 20: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Alocação na pilha

• baseada em uma pilha de controle, com registros de ativação sendo empilhados e desempilhados.

• Armazenamento de variáveis locais na pilha (no registro de ativação da chamada).

• Valores locais são removidos (perdidos) ao final da ativação (tempo de vida)

Page 21: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Alocação na Pilha

– Tempo de vida aninhado (variáveis locais)

– Frames: um frame para cada procedimento ativo

– Registradores: StackBase, LocalBase, StackTop

– Link data: return address e dynamic link

Page 22: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Alocação na heap

• necessária quando valores de nomes locais devem ser mantidos após o fim da ativação, ou

• se uma ativação deve sobreviver ao procedimento chamador.

• Gerenciamento da heap pode ser feito de várias maneiras (automático ou controlado pelo programador).

Page 23: Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos

Pilha x Heap

• Como o tamanho desses estruturas cresce e diminui dinamicamente, normalmente elas são estruturadas de forma a uma crescer em direção à outra.