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

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

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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

2 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

3 Representação de Dados Booleanos, Inteiros, Caracteres, Registros, Arrays etc. Bits, bytes, words, double words. Gap semântico.

4 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.

5 Questões Pragmáticas Representação em tamanho constante Representação direta ou indireta

6 Representação de tipos primitivos Booleanos Caracteres Inteiros

7 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;

8 Representação de união disjunta Tag e parte variante Valor do tag determina o tipo da parte variante Representação matemática: T = T 1 + … + T n Operações: teste do tag e projeção da parte variante

9 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;

10 Representação de Arrays Arrays estáticos Arrays dinâmicos

11 Representação de tipos recursivos type IntList = ^IntNode; type IntNode = record head: Integer; tail: IntList; end; var primes: IntList;

12 Avaliação de expressões (a * b) + (1 – (c * 2)) LOAD R1 a MULT R1 b LOAD R2 #1 LOAD R3 c MULT R3 #2 SUB R2 R3 ADD R1 R2

13 Avaliação de expressões (a * b) + (1 – (c * 2)) LOAD a LOAD b MULT LOADL 1 LOAD c LOADL 2 MULT SUB ADD

14 Avaliação de expressões (0 < n) /\ odd(n) LOADL 0 LOAD n LT LOAD n CALL odd AND

15 Organização do Armazenamento Estática Dinâmica (pilha e heap)

16 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).

17 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.

18 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.

19 Registros de Ativação ou frame empilhado no início da execução de um procedimento e desempilhado ao final.

20 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)

21 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

22 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).

23 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.


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google