Construção de um protótipo de uma máquina virtual para execução de código binário Aluno:...

Post on 17-Apr-2015

103 views 0 download

Transcript of Construção de um protótipo de uma máquina virtual para execução de código binário Aluno:...

Construção de um protótipo de uma máquina virtual para execução de código binário

Aluno: Wlysses Sebastião PereiraOrientador: Marcos Alberto Lopes da SilvaCurso: 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:

Código executável.

Hardware nativo.

Modelos de execução

• Interpretação textual:

Código executável.

Hardware nativo.

Le o conteúdo de texto do arquivo e efetua as ações.

Modelos de execução

• Processadores/máquinas virtuais:

Hardware nativo.

Código executável.

Hardware virtual.

Alguns ambientes de execução virtual

• Máquina virtual java (JVM):

Arquivo CLASS.

Máquina virtual Java.

Ambiente hospedeiro.

Alguns ambientes de execução virtual

• Plataforma .NET:

Arquivo .exe

Plataforma .NET

Ambiente hospedeiro.

Alguns ambientes de execução virtual

• Parrot:

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

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 byte2 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 0xFF

1 byte 1 byte 1 byte 2 bytes 2 bytes 2 bytes3 ou N bytes

1 byte0 ou N bytes

1 byte

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 2ST0 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