Aluno: Wlysses Sebastião Pereira

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Parte 1: Organização de Computadores
Arquitetura de Computadores
Introdução à Ciência da Computação Linguagens de Programação.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Programas e Microprogramas
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Execução de Programas Partes de um programa: ‣ Dados
Paradigmas de Programação
SOFTWARE BÁSICO.
Arquitetura dos Microprocessadores 8086 e 8088
Associação de resistores
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Arquitetura da Máquina Virtual Java
Introdução a Informática
Linguagens de programação
Ferramentas Programação
Sistemas Digitais Microprocessados
REPRESENTAÇÃO DE INSTRUÇÕES
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Arquitetura de Computadores
Linguagens de Programação
Prof. Msc. Raul Paradeda Aula 2 Introdução
Introdução a Programação Orientada a Objetos
O Portal do Estudante de Computação
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
Lógica de Programação UNIDADE 1 – Introdução a) Computador
JAVA: Conceitos Iniciais
PROGRAMAÇÃO I UNIDADE 1.
EEL Microprocessadores
Aula Prática - Assembly
Unidade Central de Processamento
Unidade Central de Processamento
Linguagem de Montagem.
Representação de Instruções
JAVA Linguagem Ambiente de Desenvolvimento
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 02: Introdução.
PCI- Introdução à Computação
ORGANIZAÇÃO DE COMPUTADORES
Laboratório I Mateus Raeder Material baseado nos originais da
Teoria e Implementação de Linguagens Computacionais – IF688
Organização e Arquitetura de Computadores
Mole: Um Sistema de Agentes Móveis Baseado em Java Curso de Ciência da Computação Departamento de Informática Disciplina de Tópicos Especiais em Computação.
Professor: Márcio Amador
Aula 1 - Fundamentos Java SE Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros – Agosto/2009.
Sistemas rr-09-r.01 UC: Organização e Arquitetura de Computadores Docente: Prof. MSc. Marcelo Siedler.
Lógica Estruturada Aplicada
Geração de Código aula-12-geração-de-código.pdf.
POLIMIG Curso Técnico em Informática Disciplina: Hardware
Execução de programas Cap. VIII.
Técnicas de Programação - TPR
Projeto de Linguagens de Programação
Processadores de Linguagens
Arquitetura de Computadores
Geração de Código Equipe de Monitores Teoria e Implementação de Linguagens Computacionais – IF688.
Diagrama de Componentes
Back-End Compilação aula-11-back-end.pdf.
8088 Assembly Software Básico Mitsuo Takaki.
Algoritmos e Programação I
Ciro Ceissler / ASSEMBLY Ciro Ceissler /
Lucas Aranha ASSEMBLY Lucas Aranha
CloudSim Um framework para modelagem e simulação de infraestrutura e serviços de Computação em Nuvem.
Arquitetura de Computadores
Introdução Sintaxe Básica da Linguagem JAVA
Introdução a linguagem de Programação Java. Linguagens de Programação Linguagens de máquina(muito difíceis de usar e compreender) – Comanda ações do computador.
Influencias sobre o Projeto da Linguagem
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Introdução Programação (PG) Pedro Alexandre Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa.
Transcrição da apresentação:

Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da Silva Curso: Ciência da Computação Uberlândia, 27 de Julho de 2013

Objetivo da apresentação Descrever modelos de execução de códigos executáveis. Falar sobre alguns ambientes de execução virtual. Descrever estruturas e módulos usados em ambientes de execução.

Objetivo da apresentação Apresentação do estudo de caso. Protótipo de máquina virtual para execução de código binário. Compilador assembler para criação de código binário a partir de código fonte de entrada. Demonstração da execução de códigos binários.

Modelos de execução Execução direta de código binário em hardware: 0x0A ... X86/ARM Código executável. Hardware nativo.

Modelos de execução Interpretação textual: Código executável. PRINT “X” Interpretador X86/ARM Código executável. Le o conteúdo de texto do arquivo e efetua as ações. Hardware nativo.

Processador/máquina virtual Modelos de execução Processadores/máquinas virtuais: 0x01 0x0A ... Processador/máquina virtual X86/ARM Código executável. Hardware virtual. Hardware nativo.

Alguns ambientes de execução virtual Máquina virtual java (JVM): 0xCAFEBABE ... JVM X86/ARM Arquivo CLASS. Máquina virtual Java. Ambiente hospedeiro.

Alguns ambientes de execução virtual Plataforma .NET: (CLI) .NET X86/ARM Arquivo .exe Plataforma .NET Ambiente hospedeiro.

Alguns ambientes de execução virtual Parrot: 0x0A 0x01 Parrot X86/ARM Código executável. Máquina virtual Parrot Ambiente hospedeiro.

Estruturas e módulos usados em ambientes de execução Opcode (Código de operação): Instrução Valor numérico MOV EAX, DWORD PTR [EBP+8] 0x7C90EBC2 MOV ECX, DWORD PTR [EBP+4] 0x7C90EBC5 PUSH 1 0x7C90EC34 ...

Estruturas e módulos usados em ambientes de execução Carregador de Opcode: Memória Código executável Área de código OPCODES

Estruturas e módulos usados em ambientes de execução Just in Time i++; JIT ADD [01], 1

Estudo de Caso Protótipo de Máquina virtual Processador Memória R0, R1, R2, R3, R4, R5, R6, R7, CS, DS, SS, IP, SP, BP, FLAG_Z, FLAG_S 0 ... 65535 1 byte 2 bytes

Protótipo de Máquina virtual Código binário para execução Opcode de três bytes De (00 00 00) até (FF FF FF) W 1 6 CS DS SS CÓDIGO 0xFF DADOS 1 byte 2 bytes 3 ou N bytes 0 ou N bytes

Protótipo de Máquina virtual Memória Memória Código Dados Pilha

Protótipo de Máquina virtual Execução de um código Memória Código executável Área de código OPCODES

Protótipo de Máquina virtual Executado pelo executor de Opcodes. Exibido os valores dos registradores e das áreas da memória.

Estudo de Caso Compilador assembler Linguagem parecida com assembly. Sem diferenciação entre maiúsculo e minúsculo. .VAR $variavel .PROGRAM MOV R0 2 ST0 0x0A .END

Demonstração da execução de códigos binários

Conclusão A máquina virtual executa com satisfação mesmo sendo sobre um ambiente virtual. Mostrado na prática o desenvolvimento e execução de um ambiente virtual.

Sugestões de trabalhos futuros Desenvolvimento de uma linguagem de alto nível para criação de programas na máquina virtual. Expandir a máquina migrando-a para alguma linguagem de baixo nível, como por exemplo C++.

Perguntas

Obrigado