Compiladores Tópicos de JVM
|
|
- Luciano Belo Dinis
- 8 Há anos
- Visualizações:
Transcrição
1 Compiladores Tópicos de JVM Rui Gustavo Crespo Compiladores JVM : 1/40
2 Máquinas virtuais (1) Um programa, codificado numa linguagem de alto nível, só pode ser executado na máquina para a qual o compilador gera código final Vantagens: maior eficiência no desempenho (memória e tempo de execução) Inconvenientes: execução noutra máquina exige Nova compilação Duplicação de espaço em disco (ficheiros executáveis para cada máquina) Selecção entre as diversas configurações do programa executável. Compiladores JVM : 2/40
3 Máquinas virtuais (2) A compilação para máquina virtual, permite haver um único programa executável para máquinas distintas. A execução é feita por um interpretador específico, que transcreve instruções da máquina virtual para o processador+sistema operativo. Programa fonte Compilador Executável Máquina virtual Processador + SO Saída Compiladores JVM : 3/40
4 Máquinas virtuais (3) A máquina virtual de eleição é a pilha Vantagens: Transcrição muito fácil Máquinas reais disponibilizam instruções para manipulação de pilhas Inconvenientes: processamento muito lento! Exemplos de máquinas virtuais baseadas em pilhas Compilador UCSD Pascal gera código para máquina baseada numa pilha,o P-code. JVM- Java Virtual Machine, da Sun, para Java CLI- Common Language Infrastructure, da Microsoft, para C# e VisualBasic Linguagem Postscript processada por ferramentas (ex: Gview) com 4 pilhas: operando, dicionário, execução e gráfico Compiladores JVM : 4/40
5 Máquinas virtuais (4) O JVM foi implementado em diversas plataformas SPARC, de sistema operativo Sun-OS Intel 86, de sistemas operativos Windows e Linux powerpc, de sistema operativo MacOS JVM executa threads thread, ou lighweight process, é uma unidade de processamento paralelo dentro do mesmo programa. ao contrário dos processos, todas as threads são executadas dentro do mesmo ambiente) Compiladores JVM : 5/40
6 JVM arquitectura (1) A. Mecanismos do JVM: Carregamento de classes ( class loader ): mecanismo que instala classes e interfaces. O mecanismo inclui verificações de segurança (ex: o ficheiro.class está bem definido). Engenho de execução ( execution engine ): mecanismo responsável pela execução dos métodos das classes carregadas. A informação necessária à execução é dividida em 4 espaços conceptuais: Compiladores JVM : 6/40
7 JVM arquitectura (2) Engenho de execução do JVM pc Bytecodes Área de método Código Dados da classe Armazém constantes optop Activação opval_2 opval_1 Ambiente execução lvar_n lvar_1 lvar_0 Pilha Java Pilha operandos Variáveis locais Compiladores JVM : 7/40
8 JVM arquitectura (3) B. Espaços conceptuais da máquina de execução 1. Área do método ( method area ), partilhado por todas as threads onde reside: código de cada método da classe dados da classe armazém de constantes ( constant pool ) para literais de tipos primitivos e instâncias da classe de caracteres 2. Activações ( frames ), uma para cada evocação do método Acervo ( heap ), de onde são é obtida área para os dados das instâncias Registo contador de programa ( program counter ), um por cada thread, com o endereço da instrução a executar. Compiladores JVM : 8/40
9 JVM arquitectura (4) C. Componentes de activação de método: 1. Pilha privada para Avaliação de expressões Controlo do fluxo de execução do programa 2. Tabela de 64K para variáveis locais, referenciadas por inteiros 0 referencia objecto que executa o método (this) Parâmetros da evocação referenciados a partir de 1 Variáveis locais ocupam restantes posições Nota: nas classes static, parâmetros são referenciados a partir de 0. Nota: O JVM tem uma pilha, onde são inseridas as plihas privadas de cada método evocado. A activação no topo da pilha JVM designada por pilha activa de activação (a única activação que pode ser usada). Compiladores JVM : 9/40
10 Instruções - formato Instruções designadas por Bytecodes, por o código ocupar apenas 1 Byte (200 ao todo) Cada instrução pode ter 0, ou mais, operandos. As instruções são carregadas na área de método do JVM, e executadas quando o método (que as gera) é evocado. Compiladores JVM : 10/40
11 Instruções tipos (1) O tipo de dados envolvido na instrução é determinado por uma letra. Letra Tipo Letra Tipo b Byte L Instância de classe s Short [ Tabela 1 dimensão c Caractere V void i Inteiro a Referência z Booleano l long d Double Lnome; Ex: Ljava/lang/String; é de tipo cadeia de caracteres Compiladores JVM : 11/40
12 Instruções tipos (2) JVM segue representação big-endien (Byte mais significativo no endereço mais baixo) Os tipos primitivos b,s,c,i e f ocupam uma entrada na pilha. Os tipos primitivos l e d ocupam duas entradas na pilha. Número de Bytes dos literais de cada tipo usados na instrução: Tipo Espaço (bytes) Tipo Espaço (bytes) b 1 l 8 (2 entradas na pilha) s 2 f 4 c 2 d 8 (2 entradas na pilha) i 4 Compiladores JVM : 12/40
13 Instruções tipos (3) i2[bcsfld] converte inteiro no topo da pilha Ex: i2f, converto inteiro para float f2[ild], d2[ifl] Nota: não é cast, pode haver perda de informação! Compiladores JVM : 13/40
14 Instruções load / store (1) Tload n carrega na pilha valor T na posição n Tabela variáveis x a b c d Pilha iload 2 Pilha Tabela variáveis c x a b c d Tload_[0-3]carrega na pilha valor T nas posições entre 0 e 3 (instrução sem operandos) Ex: iload_2, carrega inteiro da posição 2 mas ocupa apenas 1 Byte Compiladores JVM : 14/40
15 Instruções load / store (2) bipush val carrega na pilha o byte val sipush val carrega na pilha o short val iconst_m1 carrega na pilha inteiro 1 (instrução sem operandos) aconst_null carrega na pilha null Tconst_vT carrega na pilha literal Tipo vt Tipo vt (instrução sem operandos) i 0..5 f 0..2 l 0..1 d 0..1 Tabela variáveis x a b c d Pilha iconst_2 Tabela variáveis x a b c d Pilha 2 Compiladores JVM : 15/40
16 Instruções load / store (3) ldc #idx carrega constante de índice idx (8 bits), do armazém de constantes ldc_w #idx carrega constante de índice idx,idx+1 (16 bits) do armazém de constantes ldc2_w #idx carrega constante l/d de índice idx,idx+1 do armazém de constantes Tstore n salva da pilha valor T na posição n Tabela variáveis x a b c d Pilha y Tstore_[0-3] istore 2 Tabela variáveis x a b y d Pilha Compiladores JVM : 16/40
17 Instruções load / store (4) getstatic carrega referência a variável de classe getfield carrega referência a variável de instância Exemplo: getstatic java/lang/system.in Ljava/io/InputStream; campo Compiladores JVM : 17/40
18 Instruções aritméticas (1) Tadd retira 2 operandos da pilha, insere soma na pilha Pilha Tabela variáveis y x a b c d iadd Pilha Tabela variáveis y+x a b c d Tsub, Tmul, Tdiv, Tneg, Trem T é de tipo i,l, f, d resto negação iinc pos val adiciona val na posição pos (pode ser negativo) Compiladores JVM : 18/40
19 Instruções aritméticas (2) Tshl,Tshr desloca operando no 2º lugar, pelos bits mais baixos no oper do topo. T=i (5 bits), ou T=l (6 bits) Tand And bit a bit Tor Or bit a bit Txor Xor bit a bit Compiladores JVM : 19/40
20 Instruções pilha operandos (1) pop retira topo da pilha Pilha Tabela variáveis y x a b c d pop Tabela variáveis x a b c d Pilha pop2 retira duas posições da pilha swap troca dois operandos Pilha Tabela variáveis y x a b c d swap Pilha Tabela variáveis x y a b c d Compiladores JVM : 20/40
21 Instruções pilha operandos (2) dup duplica topo da pilha Pilha Tabela variáveis x a b c d dup Pilha Tabela variáveis x x a b c d Nota: tipicamente, a geração de um objecto feita por uma sequência de instruções new e evocação do <init> new java/lang/stringbuilder dup invokespecial java/lang/stringbuilder/<init>()v Compiladores JVM : 21/40
22 Instruções - comparações Tcmpg retira 2 operandos da pilha (T:d ou f), compara-os e insere inteiro na pilha» 0 : iguais» 1 : topo<2º, ou um dos valores igual a NaN» -1 : topo>2º Tcmpl semelhante a Tcmpg, excepto resultado 1 se um dos valores for NaN. Compiladores JVM : 22/40
23 Instruções controlo execução (1) jmp <lbl> salto incondicional (16 bits) jmp_w <lbl> salto incondicional (32 bits) ifxx <lbl> retira topo da pilha, compara-o XX com zero, salta se resultado for verdadeiro if_icmpxx <lbl> retira dois elementos, compara-os XX, salta se resultado for verdadeiro As etiquetas são da forma id: inst XX Condição XX Condição eq val == 0 gt val > 0 lt val < 0 ge val >= 0 le val <= 0 null val == null ne val!= 0 nonnull val!= null Compiladores JVM : 23/40
24 Instruções controlo execução (2) lookupswitch <chave1>: <lbl1> <chave2>: <lbl1> default: <def-lbl> Retira topo da pilha e salta para etiqueta indicada pelo valor Compiladores JVM : 24/40
25 Instruções objectos/métodos (1) invokemode <method-spec> Existem 4 modos de invocação: interface (método declarado numa interface) special (métodos que requerem manipuladores especiais: <init> ou <super>) static (método de classe estática) virtual (método normal) Nota: nas versões anteriores ao JDK1.02, instrução invokespecial denominada invokenonvirtual Compiladores JVM : 25/40
26 Instruções objectos/métodos (2) <method-spec> possui formato nome-classe/método/(argumentos)tipo-retorno Pilha antes da chamada: Pilha no retorno: Obj-ref [res] arg1 arg2 Os argumentos são sequência de tipos, sem separadores. Ex: private static void quicksort(char[] buffer, int lower, int upper) transcrito por.method public static quicksort([cii)v Nota: na invocação é obrigatório indicar os tipos de parâmetros, devido ao polimorfismo do JVM argn topo Compiladores JVM : 26/40
27 Instruções objectos/métodos (3) Treturn retorna valor no topo da pilha (T=, se método retornar void) new cria instância de classe e insere referência no topo da pilha Instrução new deve ser seguida pela evocação da inicialização, que consome da pilha a referência. Exemplo: new Integer(20); transcrito por new java/lang/integer ; cria objecto dup ; duplica topo pilha bipush 20 ; insere valor invokespecial java/lang/integer/<init>(i)v parâmetro de init Compiladores JVM : 27/40
28 Instruções tabelas (1) São objectos, mas tratados com instruções apropriadas para tornar código mais eficiente newarray Tipo cria tabela Ex: newarray int (tabela de inteiros) multianewarray <desc-array> <num-dim> Nota: 1<num-dim<255 Ex: new int[6][3][] transcrita por bipush 6 bipush 3 multianewarray [[[I 2 ;aloca 2 das 3 dimensões Compiladores JVM : 28/40
29 Instruções tabelas (2) Taload insere na pilha componente da tabela, de tipo T. Tastore retira da pilha topo, de tipo T e modifica componente da tabela. arraylength obtém dimensão da tabela Compiladores JVM : 29/40
30 Instruções tabelas (3) ; x = new int[6][3][]; bipush 6 bipush 3 multianewarray [[[I 2 astore_1 ; guarda referência em x ; x[0][1] = new int[50]; aload_1 ; insere na pilha referência da tabela iconst_0 ; insere na pilha x[0] aaload ; iconst_1 ; aloca tabela de 50 inteiros bipush 50 ; newarray int ; aastore ; guarda referência em x[0][1] Compiladores JVM : 30/40
31 Instruções excepções (1) As excepções são lançadas pela instrução athrow. O topo da pilha deve conter a referência ao objecto instância de uma excepção. new java/io/ioexception dup invokespecial java/io/ioexception/<init>()v athrow Compiladores JVM : 31/40
32 Instruções excepções (2) O corpo try{ }catch{ } é determinado no jasmin pela directiva.catch java/lang/exception from lb11 to lbl2 using Handler lbl1 e lbl2 são as etiquetas das instruções delimitadoras do try{ }, e Handler é a etiqueta da primeira instrução do catch{ }. Compiladores JVM : 32/40
33 Directivas (1) A classe pode conter as directivas.source id # opcional.class Qualif id Qualif é o qualificador da classe (public, ).super id.implements id Exemplo.source HelloWorld.j.class public HelloWorld.super java/lang/object Compiladores JVM : 33/40
34 Directivas (1) O método deve ser delimitado pelas directivas.method Qualif id(pars)tipo Qualif é o qualificador do método (public, ).end method Em cada método devem ser indicadas as seguintes directivas.limits locals nn espaço de variáveis locais (this ocupa 1ª pos. nos métodos não estáticos).limits stack nn profundidade máxima da pilha de operandos Compiladores JVM : 34/40
35 Armazém de constantes Constantes armazenadas no armazém constant pool, indexadas a partir de #1. void usemanynumeric() { int i = 100; } int j = ; long l1 = 1; long l2 = 0xffffffff; double d = 2.2;... Method void usemanynumeric() 0 bipush 100 // Push a small int with bipush 2 istore_1 3 ldc #1 // Push int constant ; a larger int // value uses ldc 5 istore_2 6 lconst_1 // A tiny long value uses short, fast lconst_1 7 lstore_3 8 ldc2_w #6 // Push long 0xffffffff (that is, an int -1); any // long constant value can be pushed using ldc2_w 11 lstore 5 13 ldc2_w #8 // Push double constant ; uncommon // double values are also pushed using ldc2_w 16 dstore 7 Compiladores JVM : 35/40
36 Exemplo (1) Ex: O classico Hello world! class HelloWorld { public static void main(string args[]) { System.out.println( Hello World!"); } }.source HelloWorld.j.class public HelloWorld.super java/lang/object.method public <init>()v ; construtor simples aload_0 invokenonvirtual java/lang/object/<init>()v return.end method Compiladores JVM : 36/40
37 Exemplo (2).method public static main([ljava/lang/string;)v.limit stack 2 getstatic java/lang/system/out:ljava/io/printstream; ldc "Hello World!" invokevirtual java/io/printstream/println(ljava/lang/string;)v return.end method Nota: o ficheiro.class ocupa apenas 377 B Compiladores JVM : 37/40
38 Ferramentas (1) javap c lista código JVM de ficheiro class Exemplo public class Test { public static void main(string args[]) { int i; i = 2; i = i + 7; } } Compiladores JVM : 38/40
39 Ferramentas (2) C:\ > javap -c Test Compiled from Test.java public class Test extends java.lang.object { public Test(); // a default constructor created public static void main(java.lang.string[]); } Method Test() 0 aload_0 1 invokespecial #1 4 return Method void main(java.lang.string[]) 0 iconst_2 // Put integer 2 on stack 1 istore_1 // Store the top stack value at location 1 2 iload_1 // Put the value at location 1 on stack 3 bipush 7 // Put the value 7 on the stack 5 iadd // Add two top stack values together 6 istore_1 // The sum, on top of stack, stored at location 1 7 return // Finished processing Compiladores JVM : 39/40
40 Ferramentas (3) jasmin gera ficheiro.class Pode ser obtido na página $ java -jar jasmin.jar <filenames> Compiladores JVM : 40/40
Arquitectura de Computadores II. Máquinas Virtuais
Arquitectura de Computadores II 3º Ano Máquinas Virtuais João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Março 2003 Máquinas Virtuais Questões que levaram à introdução de máquinas
Leia maisfile.j. a Baseado no Jasmin User Guide. (http://jasmin.sourceforge.net/)
Jasmin a 1. Jasmin é um assembler para Java que recebe um descrição textual (ASCII) de classes Java e as converte para arquivos (binários) no formato class file. 2. Foi desenhado para ser um assembler
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula extra A Máquina Virtual Java Prof. Márcio Delamaro delamaro@icmc.usp.br Como
Leia maisJVM Máquina Virtual Java
JVM Máquina Virtual Java Cristiano Damiani Vasconcellos cristiano.vasconcello@udesc.br JVM - Introdução Processador virtual; Possui seu próprio conjunto de instruções; Arquitetura baseada em pilha de operandos;
Leia maisAndré Santos / Pablo Sampaio
JVM- Máquina Virtual Java André Santos / Pablo Sampaio Estrutura da Apresentação Máquinas Virtuais Introdução à JVM Arquivo class Tipos de Dados Descritores de Tipos Frames Instruções Compilando para a
Leia maisUniversidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Leia maisArquitecturas Alternativas. Java Virtual Machine
Arquitecturas Alternativas Java Virtual Machine Compilação da linguagem Java A linguagem Java é uma linguagem interpretada que é executada por uma máquina virtual software denominada JVM (Java Virtual
Leia maisESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA 0 Iniciar o ambiente de desenvolvimento integrado
Leia mais2. O gerador de código estende DepthFirstAdapter implementando a interpretação que gerará código Jasmin a partir de Smallpascal.
Geração de Código para Smallpascal a 1. Já estudamos como SableCC faz uso do design pattern visitor para construir compiladores modulares. Vimos também os principais componentes da máquina virtual Java
Leia maisa Baseado no Capítulo 5 de Inside the Virtual Machine, por Bill Vernners.
Arquitetura da Máquina Virtual Java a 1. Principais subsistemas máquina virtual Java (JVM): Carregador de classes ( class loader ): carrega classes e interfaces a partir de nomes completamente qualificados.
Leia maisFBV - Linguagem de Programação II. Um pouco sobre Java
FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base
Leia maisESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 3: Métodos LEEC@IST Java 1/45 Métodos (1) Sintaxe Qualif Tipo Ident ( [ TipoP IdentP [, TipoP IdentP]* ] ) { [ Variável_local Instrução ]* Qualif: qualificador (visibilidade,
Leia maisConjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas
Conjunto de instruções O Conjunto de Instruções ISA Instruction Set Architecture Alguns conceitos... Linguagem máquina Combinação de 0 s e 1 s organizados segundo palavras que são as instruções que o processador
Leia maisCAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM
CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas
Leia maisArquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Fernando Fonseca Ramos Faculdade de Ciência e Tecnologia de Montes Claros Fundação Educacional Montes Claros 1 Índice 1- Introdução 2- Exemplo de Microarquitetura
Leia maisAULA 02. 1. Uma linguagem de programação orientada a objetos
AULA 02 TECNOLOGIA JAVA O nome "Java" é usado para referir-se a 1. Uma linguagem de programação orientada a objetos 2. Uma coleção de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicações
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem
Leia maisSintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.
Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java
Leia maisConjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)
Arquitectura de um computador Caracterizada por: Conjunto de instruções do processador (ISA Estrutura interna do processador (que registadores existem, etc Modelo de memória (dimensão endereçável, alcance
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:
Leia maisUniversidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Programação Orientada a Objectos - 28/29; P. Prata, P. Fazendeiro 2 A tecnologia Java Uma ideia base da linguagem JAVA é a de que um programa em JAVA deve poder ser executado em qualquer tipo de computador
Leia maisSintaxe Básica de Java Parte 1
Sintaxe Básica de Java Parte 1 Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marcioubeno.com Fonte: Material da Profª Karina Oliveira Estrutura de Programa Um programa
Leia maisIntrodução à Arquitetura de Computadores
1 Introdução à Arquitetura de Computadores Hardware e software Organização de um computador: Processador: registradores, ALU, unidade de controle Memórias Dispositivos de E/S Barramentos Linguagens de
Leia maisLinguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br
Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim
Leia maisCurso Adonai QUESTÕES Disciplina Linguagem JAVA
1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String
Leia maisConjunto de instruções e modos de. aula 4. Profa. Débora Matos
Conjunto de instruções e modos de endereçamento aula 4 Profa. Débora Matos Conjunto de Instruções A = ((B + C) x D + E F)/(G x H) A H denotam posições da memória endereços As arquiteturas possuem as seguintes
Leia maisSlides_Java_1 !"$ % & $ ' ' Output: Run java. Compile javac. Name of program. Must be the same as name of file. Java source code.
Slides_Java_1!"#$!" $ % & $ Sistemas Informáticos I, 2005/2006 ( Java source code Compile javac Java bytecode Run java Output:!"#) %& Name of program. Must be the same as name of file.!"#$!"$ % & $ Where
Leia mais4-1. Parte2: A Arquitetura do Conjunto de Instruções
4-1 Parte2: A Arquitetura do Conjunto de Instruções 4-2 Bibliografia [1] Miles J. Murdocca e Vincent P. Heuring, Introdução à Arquitetura de Computadores [2] Marcelo Rubinstein Transparências do curso
Leia maisJava - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br
Java - Introdução Professor: Vilson Heck Junior vilson.junior@ifsc.edu.br Agenda O que é Java? Sun / Oracle. IDE - NetBeans. Linguagem Java; Maquina Virtual; Atividade Prática. Identificando Elementos
Leia maisLinguagem de Programação Introdução a Linguagem Java
Linguagem de Programação Introdução a Linguagem Java Rafael Silva Guimarães Instituto Federal do Espírito Santo Campus Cachoeiro de Itapemirim Definição A linguagem Java foi desenvolvida pela Sun Microsystems,
Leia maisOrganização de Computadores 1
Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).
Leia maisCONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa
CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs
Leia maisLinguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação
Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada
Leia maisPADI 2015/16. Aula 1 Introdução à Plataforma.NET
PADI 2015/16 Aula 1 Introdução à Plataforma.NET 1 Sumário 1. Framework.NET Arquitectura 2. Linguagem C# 2.0 Sintaxe C# vs. Java vs. C++ 3. IDE: MS Visual Studio 2005 ou superior Ferramentas Console/Win
Leia mais3 Classes e instanciação de objectos (em Java)
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisAlgoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31
APROG Algoritmia e Programação Linguagem JAVA Básico Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 Linguagem Java Estrutura de um Programa Geral Básica Estruturas de Dados Variáveis Constantes Tipos de Dados
Leia maisAula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng.
Aula teórica 3 Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java Preparado por eng.tatiana Kovalenko Linguagens de Programação Para escrever programas é necessário
Leia maisAlgoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões
Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal
Leia maisJAVA VIRTUAL MACHINE (JVM)
JAVA VIRTUAL MACHINE (JVM) Por Leandro Baptista, Marlon Palangani e Tiago Deoldoto, 11 de Abril de 2009 A linguagem de programação Java proporciona o desenvolvimento aplicações que podem ser executadas
Leia maisComandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }
Este documento tem o objetivo de demonstrar os comandos e sintaxes básicas da linguagem Java. 1. Alguns passos para criar programas em Java As primeiras coisas que devem ser abordadas para começar a desenvolver
Leia maisMicrojava. Káio, Estevão e André
Microjava Káio, Estevão e André Sumário da apresentação JVM - a máquina virtual Java microjava 701 Java Virtual Machine - JVM Máquina que executa programas em bytecode Processador virtual: o Possui seu
Leia maisBSI UFRPE Prof. Gustavo Callou gcallou@gmail.com
BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com HelloWorld.java: public class HelloWorld { public static void main (String[] args) { System.out.println( Hello, World ); } } Identificadores são usados
Leia maisJSP - ORIENTADO A OBJETOS
JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...
Leia maisProgramação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 01 Fundamentos de Computadores Sumário : Conceitos básicos: computador,
Leia maisCapítulo 8. Software de Sistema
Capítulo 8 Software de Sistema Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture Objectivos Conhecer o ciclo de desenvolvimento da linguagem Java
Leia maisAnálises Geração RI (representação intermediária) Código Intermediário
Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O
Leia maisUm pouco do Java. Prof. Eduardo
Um pouco do Java Prof. Eduardo Introdução A tecnologia JAVA é composta pela linguagem de programação JAVA e pela plataforma de desenvolvimento JAVA. Os programas são escritos em arquivos-texto com a extensão.java.
Leia maisLaboratório I Aula 2
Laboratório I Aula 2 Prof. Msc. Anderson da Cruz Fases da Programação Implementação de Linguagens de Programação Compilação geração de código executável dependente da plataforma de execução tradução lenta
Leia maisinsfcanceof new public switch transient while byte continue extends for int null
Palavras -chave de JAV A abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class float insfcanceof new public
Leia maisAula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/
Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.
Leia maisIntrodução à Programação
Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia mais2 Orientação a objetos na prática
2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos
Leia maisInvocação de Métodos Remotos
Invocação de Métodos Remotos Java RMI (Remote Method Invocation) Tópicos Tecnologia RMI Introdução Modelo de camadas do RMI Arquitetura Fluxo de operação do RMI Passos para implementação Estudo de caso
Leia maisULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h
ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Sumário Unidade Lógica Aritmetrica Registradores Unidade Lógica Operações da ULA Unidade de Ponto Flutuante Representação
Leia maisMódulo 06 Desenho de Classes
Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.
Leia maisArquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
Leia maisUma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)
Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido
Leia maisKeeper of Knowledge. Capítulo 1 Conceitos Básicos do Java
Capítulo 1 Conceitos Básicos do Java INTRODUÇÃO O objectivo deste tutorial é ensinar as regras básicas de programação em Java e facilitar a aprendizagem dos capítulos que se seguem. Qualquer dúvida sobre
Leia maisLista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição
Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:
Leia maisSlide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education
Java Como Programar, 8/E Slide 1 Slide 2 Slide 3 Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados ou, com
Leia maisManipulação de Bytecode Java
Manipulação de Bytecode Java Mantendo o espírito Hacker no mundo das linguagens de alto nível André Luiz Breves de Oliveira andre.breves@gmail.com class Hello { public static void main(string[] args) {
Leia maisMemória. Espaço de endereçamento de um programa Endereços reais e virtuais Recolocação dinâmica Segmentação
Memória Espaço de endereçamento de um programa Endereços reais e virtuais Recolocação dinâmica Segmentação Espaço de endereçamento de um programa Para ser executado, um programa tem de ser trazido para
Leia maisNOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann
Universidade Federal de Santa Maria NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann O modelo (ou arquitetura) de von
Leia maisNível da Microarquitetura
Nível da Microarquitetura (Aula 10) Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Agradecimentos: Camilo Calvi - LPRM/DI/UFES Máquina de Vários Níveis Modernas (ISA)
Leia maisCriar a classe Aula.java com o seguinte código: Compilar e Executar
Introdução à Java Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Código Exemplo da Aula Criar a classe Aula.java com o seguinte código: public class Aula { public static void
Leia maisAlgoritmos e Programação
Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti
Leia maisMicroarquitetura IJVM. Datapath mic-1. Função dos Registradores. mic-1
Microarquitetura IJVM mic-1 Datapath mic-1 Este é mais um exemplo de datapath para microarquitetura IJVM desenvolvida por Andew Tanenbaum Parte da CPU que contém a ALU, suas entradas e saídas 2 Função
Leia maisSistemas Distribuídos
Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral
Leia maisUnidade IV: Ponteiros, Referências e Arrays
Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática
Leia mais(Aula 17) Threads em Java
(Aula 17) Threads em Java Difícil As Threads thread threads de emjava classificar sãogerenciadaspelajvm. podemser com user criadasdas thread ou kernel Profa. Patrícia A seguintesmaneiras: Fazendo extend
Leia maisComputadores de Programação (MAB353)
Computadores de Programação (MAB353) Aula 8: 04 de maio de 2010 1 Formatos de instruções MIPS 2 Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS 3
Leia maisExercícios de Revisão Java Básico
Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1
Leia maisComponentes da linguagem C++
Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras
Leia maisParadigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33
PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição de constantes:
Leia maisCapítulo 2: Introdução à Linguagem C
Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso
Leia maisA Linguagem Java. Alberto Costa Neto DComp - UFS
A Linguagem Java Alberto Costa Neto DComp - UFS 1 Roteiro Comentários Variáveis Tipos Primitivos de Dados Casting Comandos de Entrada e Saída Operadores Constantes 2 Comentários /** Classe para impressão
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisAnálise de Programação
Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros
Leia maisGeração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO
Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica
Leia maisSeminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo
Seminário - C# DSO II Desenvolvimento de Sistemas Orientados a Objetos 2 Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo Roteiro Breve Histórico Plataforma.NET Características da Linguagem Sintaxe Versões
Leia mais4 Avaliação do Código Gerado
Referencial Teórico 4 Avaliação do Código Gerado Nós fizemos alguns exemplos para avaliar a eficiência da especificação proposta, tanto em termos de velocidade de execução quanto de diminuição do tamanho
Leia maisJAVA. Fabrício de Sousa fabbricio7@yahoo.com.br
JAVA Fabrício de Sousa fabbricio7@yahoo.com.br Agenda 2 Características Ambientes de Desenvolvimento Sintaxe Comentários Tipos de dados primitivos Caracteres especiais Variáveis Operadores Aritméticos
Leia maisCriando documentação com javadoc
H Criando documentação com javadoc H.1 Introdução Neste apêndice, fornecemos uma introdução a javadoc ferramenta utilizada para criar arquivos HTML que documentam o código Java. Essa ferramenta é usada
Leia maisUniversidade da Beira Interior. Sistemas Distribuídos
Folha 6-1 Sincronização de Threads A sincronização de Threads em Java é baseada no conceito do Monitor (de Hoare). Cada objecto Java tem associado um monitor (ou lock ) que pode ser activado se a palavra
Leia maisNoções sobre Objetos e Classes
Noções sobre Objetos e Classes Prof. Marcelo Cohen 1. Elementos de programação Revisão de programação variáveis, tipos de dados expressões e operadores cadeias de caracteres escopo de variáveis Revisão
Leia maisDesenvolvimento OO com Java Orientação a objetos básica
Desenvolvimento OO com Java Orientação a objetos básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal
Leia maisAlgoritmos e Programação II. Sobrecarga
Algoritmos e Programação II Baseado no Material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, têm nomes distintos porque
Leia maisComo foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.
5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo
Leia maisKeeper of Knowledge. Capítulo 2 Classes em Java
Capítulo 2 Classes em Java INTRODUÇÃO Uma classe é um conjunto de software que representa uma realidade qualquer, que pode ser representada por números e símbolos. Uma classe possui dados de um ou mais
Leia maisANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software
ANHANGUERA EDUCACIONAL Capítulo 2 Conceitos de Hardware e Software Hardware Um sistema computacional é um conjunto de de circuitos eletronicos. Unidade funcionais: processador, memória principal, dispositivo
Leia maisLinguagem de Montagem 2. Operações e Operandos
Linguagem de Montagem 2 Operações e Operandos Revisão Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer Esse conjunto de instruções chamamos de algoritmo
Leia maisCURSO DE PROGRAMAÇÃO EM JAVA
CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações
Leia mais