construção de um protótipo de uma máquina virtual para execução de código binário aluno:...
TRANSCRIPT
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