Organização do Armazenamento EstáticaEstática –Variáveis globais; –Fortran; Dinâmica (pilha e heap)Dinâmica (pilha e heap) –Variáveis locais; –Sem aninhamento:

Slides:



Advertisements
Apresentações semelhantes
Christiano Lima Santos
Advertisements

ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
A Abstração de Programação Concorrente
Paradigmas de Linguagens Tipos de Dados
Alocação Dinâmida de Memória
ESTRUTURAS DO TIPO FILA
Linguagens de Programação Orientadas a Objetos
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
CISC e RISC.
Alocação Dinâmica de Memória
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Construção de Compiladores
7 Abstração Genérica Unidades genéricas e instanciação.
Uso de Orientação a Objetos em Java
Algoritmos e Estruturas de Dados II
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Sincronização e Comunicação entre Processos
Robson Godoi / Sandra Siebra
Programação em Assembly Variáveis estruturadas
O Portal do Estudante de Computação
O Portal do Estudante de Computação
O Portal do Estudante de Computação
Paradigmas de programação
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Variáveis, Tipos de Dados e Constantes
Programação Orientada a Objetos em Delphi
Unidade 3 Controle de Concorrência
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Conceitos de Linguagem de Programação
Introdução a Programação COM 100 Aula 07 Procedimentos.
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Alocação Dinâmica de Memória
Introdução ao uso de vatores na linguagem PASCAL.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Organização do Ambiente de Execução (Runtime System)
Tipos de Dados Paradigmas de Programação
Verificação de Tipos e Escopos
Nomes, Variáveis e Vinculações
Paradigmas de Linguagens de Programação Linguagem Imperativa 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.
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Ambiente de Execução - Rotinas
Computação Eletrônica
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Lógica Estruturada Aplicada
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Capítulo VIII Ambientes de Execução
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Professor Ulisses Vasconcelos
Estruturas de Dados + Algoritmos = Programas
Registradores.
Procedimentos Registro de Ativação e Variáveis Locais 11 1.
Geração de Código Fase final do compilador
Arquivos. Motivação Imagine dar entrada (digitar), a cada execução do programa, em todos os dados de um sistema. por exemplo, todos os registro de livros.
Registros. Definição (por comparação) Tipo de dados estruturado como array Diferente de arrays – Elementos armazenados em um registro podem ser distintos.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Geração de Código Difícil de generalizar, devido à variedade de características das máquinas-destino: –Conjunto de registradores (se houver) –Pilha –Instruções.
AULA 09 PROGRAMAÇÃO I. Estruturas de Dados Heterogêneas 10/08/2010 Programação I 2 Objetivo: Estudar os tipos de dados heterogêneos:  Registros;  Arrays.
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
MATA56 Tipos, Verificação de Tipos Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave – nomes.
COMPILADORES 07 Prof. Marcos.
Computação Eletrônica Variáveis Inteiras. A memória A memória pode ser vista como um imenso gaveteiro Em cada gaveta, guardamos uma informação. Por exemplo,
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
SUB-ROTINAS EM PASCAL PROGRAMAÇÃO MODULARIZADA 252.
Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro
Transcrição da apresentação:

Organização do Armazenamento EstáticaEstática –Variáveis globais; –Fortran; Dinâmica (pilha e heap)Dinâmica (pilha e heap) –Variáveis locais; –Sem aninhamento: Procedimento acessa somente variáveis locais e globaisProcedimento acessa somente variáveis locais e globais C;C; –Com aninhamento: Procedimento pode acessar variáveis não-locais;Procedimento pode acessar variáveis não-locais; Pascal;Pascal;

Alocação estática Endereços conhecidos em tempo de compilação, possibilitando acesso mais eficiente;Endereços conhecidos em tempo de compilação, possibilitando acesso mais eficiente; Valores “persistem” entre chamadas de procedimentos (se usada para procedimentos);Valores “persistem” entre chamadas de procedimentos (se usada para procedimentos); Compilador deve conhecer o tipo de cada variável antes da execução:Compilador deve conhecer o tipo de cada variável antes da execução: –Tipagem estática (PASCAL, JAVA, Haskell, etc.); Tamanho dos objetos tem que ser conhecido em tempo de compilação.Tamanho dos objetos tem que ser conhecido em tempo de compilação. –Retrição de “tipos de tamanho fixo”;

Alocação estática type Date = record type Date = record y: Integer, y: Integer, m: Integer, m: Integer, d: Integer d: Integer end; end; var a: Array 3 of Integer; var a: Array 3 of Integer; var b: Boolean; var b: Boolean; var c: Char; var c: Char; var t: Date; var t: Date; a[0] a[1] a[2] b c t.y t.m t.d Espaço não usado a t

Alocação estática - limitações Não suporta procedimentos recursivos;Não suporta procedimentos recursivos; Estruturas de dados não podem ser criadas dinamicamente.Estruturas de dados não podem ser criadas dinamicamente.

Variáveis Locais Organização do Armazenamento Pilha (Variáveis Locais) Uso da pilha permite variáveis locais;Uso da pilha permite variáveis locais; A pilha também armazena o estado do programa durante chamadas de procedimentos: valores de registradores, contador do programa, computações intermediárias etc.A pilha também armazena o estado do programa durante chamadas de procedimentos: valores de registradores, contador do programa, computações intermediárias etc.

Variáveis Locais Organização do Armazenamento Pilha (Variáveis Locais) let var a: array 3 of integer; var a: array 3 of integer; var b: Boolean; var b: Boolean; var c: Char; var c: Char; proc Y () ~ proc Y () ~ let let var d: Integer; var d: Integer; var e: record c:Char, n:Integer end var e: record c:Char, n:Integer end in …; in …; proc Z () ~ proc Z () ~ let let var f:Integer var f:Integer in in begin …; Y(); … end begin …; Y(); … end in in begin …; Y(); …; Z(); … end begin …; Y(); …; Z(); … end

Variáveis Locais Organização do Armazenamento Pilha (Variáveis Locais) tempo de vida de variáveis globais tempo de vida de variáveis locais a Y tempo de vida de variáveis locais a Z Programa inicia Programa chama Y Retorno de Y Programa chama Z Z chama YRetorno de Y Retorno de Z Programa pára

Acessando Varáveis Locais e Globais (Stack Frames) globals SB ST(1) Depois que o programa inicia ST = Stack Top

Acessando Varáveis Locais e Globais (Stack Frames) globals frame for Y SB LB ST (2) Depois que o programa chama Y LB = Local Base

Estrutura de um frame ligação dinâmica endereço de retorno ligação dados locais SB = Stack Base LB = Local Base ST = Stack Top

Acessando Varáveis Locais e Globais (Stack Frames) globals frame for Y SB LB ST (2) Depois que o programa chama Y

Acessando Varáveis Locais e Globais (Stack Frames) globals SB ST(3) Após retorno de Y

Acessando Varáveis Locais e Globais (Stack Frames) globals frame for Z SB LB ST (4) Após programa chamar Z

Acessando Varáveis Locais e Globais (Stack Frames) globals frame for Z frame for Y SB LB ST (5) Após Z chamar Y

Acessando Varáveis Locais e Globais (Stack Frames) globals frame for Z SB LB ST (6) Após retorno de Y

Acessando Varáveis Locais e Globais (Stack Frames) globals SB ST(7) Após retorno de Z

Instruções para acessar variáveis Variáveis globais:Variáveis globais: –LOAD d [SB] –STORE d [SB] Variáveis locais:Variáveis locais: –LOAD d [LB]

Instruções para acessar variáveis Exemplos:Exemplos: –LOAD 0 [SB] Ler variável global a[0];Ler variável global a[0]; –LOAD 4 [SB] Ler variável global c;Ler variável global c; –LOAD 2 [LB]; Para procedimento Y ler variávei local d;Para procedimento Y ler variávei local d; –LOAD 4 [LB]; Para procedimento Y ler variávei local e.n;Para procedimento Y ler variávei local e.n; –LOAD 2 [LB]; Para procedimento Z ler variávei local f;Para procedimento Z ler variávei local f;

Variáveis não-locais Em linguagens como PASCAL, procedimentos podem acessar variáveis não- locais:Em linguagens como PASCAL, procedimentos podem acessar variáveis não- locais: –Procedimentos aninhados; –Procedimento pode acessar uma variável que não é local a P mas é local a um procedimento que o envolve; Registradores L 1, L 2, …, L n :Registradores L 1, L 2, …, L n : –Acesso aos frames de variáveis não-locais;

let var g1: Integer; var g2: Array 3 of Boolean proc Q () ~ let let var q: Array 3 of Char proc R () ~ let var r: Boolean; in begin … end in begin … end; proc S () ~ let var s: Array 4 of Char; in begin … end var q: Array 3 of Char proc R () ~ let var r: Boolean; in begin … end in begin … end; proc S () ~ let var s: Array 4 of Char; in begin … end in begin … end in begin … end Variáveis Locais Organização do Armazenamento Pilha (Variáveis Locais)

Acessando Varáveis Não- Locais frame for P globals SB LB ST (1) Depois que o programa chama P

Acessando Varáveis Não- Locais frame for P globals SB L1 ST (2) Após P chamar Q frame for Q LB

Acessando Varáveis Não- Locais frame for P globals SB LB ST (3) Depois de retornar de Q

Acessando Varáveis Não- Locais frame for P globals SB L1 ST (4) Após P chamar S frame for S LB

Acessando Varáveis Não- Locais frame for P globals SB L1 (5) Após S chamar Q frame for S ST LB frame for Q

Acessando Varáveis Não- Locais frame for P globals SB L1 ST (6) Após Q chamar R frame for S LB frame for Q frame for R L2

Acessando Varáveis Não- Locais frame for P globals SB L1 ST (7) Após retorno de R frame for S LB frame for Q

Acessando Varáveis Não- Locais frame for P globals SB L1 ST (8) Após retorno de Q frame for S LB

Instruções para acessar variáveis Exemplos:Exemplos: –LOAD d [SB] Para procedimento R acessar uma variável globalPara procedimento R acessar uma variável global –LOAD d [LB] Para procedimento R acessar uma variável local a ele próprio;Para procedimento R acessar uma variável local a ele próprio; –LOAD d [L1]; Para procedimento R acessar uma variável local a Q;Para procedimento R acessar uma variável local a Q; –LOAD d [L2]; Para procedimento R acessar uma variável local a P;Para procedimento R acessar uma variável local a P;

Estrutura Estendida de um frame ligação dinâmica endereço de retorno ligação dados locais L1 = content(LB) L2 = content(content(LB)) L3 = content(content(content(LB))) ligação estática