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

Slides:



Advertisements
Apresentações semelhantes
Christiano Lima Santos
Advertisements

Estruturação de Linguagens (Pascal e C++)
TIPOS ABSTRATOS DE DADOS
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Linguagem de Programação I
Paradigmas de Linguagens Tipos de Dados
Alocação Dinâmida de Memória
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
Programação Básica em Java
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
CISC e RISC.
Rafael Pinto Frederico Corrêa
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
REPRESENTAÇÃO DE INSTRUÇÕES
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Construção de Compiladores
7 Abstração Genérica Unidades genéricas e instanciação.
8 Sistemas de Tipos Polimorfismo de inclusão.
Organização da Memória Principal
Paradigmas da Programação
Universidade de Brasília
Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Robson Godoi / Sandra Siebra
Escola Secundária c/ 3º CEB da Batalha
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Linguagem técnica de programação I Java – REVISÃO
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
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.
Representação de Instruções
Linguagem de Programação II Parte IX
Conceitos de Linguagem de Programação
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
ORGANIZAÇÃO DE COMPUTADORES
Tipos de Dados Paradigmas de Programação
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.
Agenda Modos de Endereçamento.
Mini Curso Java como Programar
Ambiente de Execução - Rotinas
Técnicas de Programação I Prof:. Msc. Arimatéia Junior Fortaleza-2011.
Lógica Estruturada Aplicada
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Capítulo VIII Ambientes de Execução
Modelos de Linguagem de Programação I Aula 06
Programação Orientada a Objetos - Java
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Estruturas de Dados + Algoritmos = Programas
Procedimentos Registro de Ativação e Variáveis Locais 11 1.
Conceitos Básicos e Manipulação de Objetos
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Nível ISA.
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:
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.
 A linguagem Java tem diversas classes para a manipulação dos conjuntos de dados. Esses dados podem ser organizados de duas maneiras diferentes: ◦ Vetores.
Ponteiros em C Prof. Kariston Pereira
Estruturas de Dados Murilo Salgado Razoli.
Análise Semântica e Representação Intermédia
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
A linguagem de Máquina – Instruções Básicas
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
Linguagem de Programação
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.
Transcrição da apresentação:

Organização do Ambiente de Execução (Runtime System) Tipos e valores variáveis expressões procedimentos funções parâmetros Linguagem de Programação Geração de código gap semântico bits bytes words registradores pilhas endereços Sub-rotinas Arquitetura Física

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

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 HOJE !!!

Representação de Dados Linguagem: Booleanos, Inteiros, Caracteres, Registros, Arrays etc. Arquitetura Física: Bits, bytes, words, double words. Gap semântico;

Princípios Básicos Não confusão: Unicidade: Valores diferentes (de um tipo) devem ter representações diferentes; Evita problemas em operações de comparação; Números Reais … (confusão é inevitável ) Unicidade: Cada valor deve ter a mesma representação. Desejável, porém não essencial; Representação de inteiros …

Questões Pragmáticas Representação em tamanho constante Todos os valores de um tipo tem mesmo tamanho; Compilador pode planejar alocação de espaço; Representação direta ou indireta Direta: Pascal, C, etc. Tipos primitivos em JAVA®; Indireta (apontadores): Linguagens Funcionais (Haskell, ML, …); Objetos em linguagens OO (Java®); Essencial para tipos cujos valores variam de tamanho;

Rep. Direta vs. Rep. Indireta x Representação direta de x x Representação indireta de x y Representação indireta de y, com mesmo tipo de x, mas requisitando maior espaço

Representação de tipos primitivos Booleanos 1 byte ou word; Caracteres Tabelas de caracteres; ISO-Latin1 (28), UNICODE (216), etc. Inteiros Em geral, representado por 1 word; -maxint, …, -1, 0, 1, …, +maxint; Maxint = 2w-1 – 1, onde w = size[[Integer]]; Java: w = 32;

Representação de tipos primitivos Exemplo: Intel Pentium 1 word = 32 bits; Armazenamento organizado em 8-bit (byte), 16-bit (half-word), 64-bit (double-word); Type Representação Size Booleano 000000002 e 111111112 1 byte Caractere ASCII Inteiros twos-complement 1 half-word ou word

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;

Representação de Registros Representação direta; Simples justaposição dos campos; her.female True today.y 1 2000 her.dob.y 1978 today.m her.dob her.dob.m 5 today.d her.dob.d 5 ‘u’ her.status

Representação de união disjunta Representação matemática: T = T1 + … + Tn Tag (identifica o Ti) e parte variante (Ti); Valor do tag determina o tipo da parte variante; Operações: teste do tag e projeção da parte variante; Exemplos: Registros variantes em Pascal e Ada; Uniões em Algol-68; Tipos Algébricos em Haskell e ML (funcionais); Tamanho da parte variante varia …  Como manter requisito de tamanho constante ? Aloque o máximo de bytes necessários; 

Representação de união disjunta type Shape = (point, circle, box); Figure = record case s: Shape of point: () circle: (r: Integer) box: (h,w: Integer) end; var fig:Figure

Representação de União Disjunta fig.s point fig.s circle fig.s box fig.r 5 fig.h 3 fig.w 4

Representação de Arrays Arrays estáticos Limites conhecidos em tempo de compilação; Justaposição dos valores; var grade: array [-2..3] of Char gnp: array [2000..2004] of Integer grade[-2] ‘A’ ‘B’ ‘C’ ‘N’ ‘F’ ‘G’ gnp[2000] 15100 15200 15000 14200 13500 grade[-1] gnp[2001] grade[0] gnp[2002] grade[1] gnp[2003] grade[2] gnp[2004] grade[3]

Representação de Arrays Arrays dinâmicos Limites conhecidos em tempo de execução; Representação indireta: Manipulador (descritor de array): limites + ponteiro; Exemplo em Ada: type String is array (Integer range <>) of Character d: String (1 .. k) s: String (m .. n - 1)

Representação de Arrays Dinâmicos (Ada) ‘u’ ‘S’ origem 1 7 d[1] d limite inferior d[2] limite superior d[3] d[4] k = 7 m = 0 n = 4 d[5] d[6] d[7] origem 4 ‘J’ ‘e’ ‘f’ s[0] s limite inferior s[1] limite superior s[2] s[3]

Representação de Tipos Recursivos type IntList = ^IntNode; type IntNode = record head: Integer; tail: IntList; end; var primes: IntList; data IntList = Nil | Cons Int IntList primes :: IntList primes = Cons 2 (Cons 3 (Cons 5 (Cons 7 Nil)))

Representação de Tipos Recursivos primes 2 manipulador 3 5 7

Avaliação de Expressões (Máquina de Registradores) (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

Avaliação de Expressões (Máquina de Pilha) (a * b) + (1 – (c * 2)) LOAD a LOAD b MULT LOADL 1 LOAD c LOADL 2 MULT SUB ADD