construção de um protótipo de uma máquina virtual para execução de código binário aluno:...
TRANSCRIPT
![Page 1: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/1.jpg)
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
![Page 2: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/2.jpg)
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.
![Page 3: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/3.jpg)
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.
![Page 4: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/4.jpg)
Modelos de execução
• Execução direta de código binário em hardware:
Código executável.
Hardware nativo.
![Page 5: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/5.jpg)
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.
![Page 6: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/6.jpg)
Modelos de execução
• Processadores/máquinas virtuais:
Hardware nativo.
Código executável.
Hardware virtual.
![Page 7: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/7.jpg)
Alguns ambientes de execução virtual
• Máquina virtual java (JVM):
Arquivo CLASS.
Máquina virtual Java.
Ambiente hospedeiro.
![Page 8: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/8.jpg)
Alguns ambientes de execução virtual
• Plataforma .NET:
Arquivo .exe
Plataforma .NET
Ambiente hospedeiro.
![Page 9: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/9.jpg)
Alguns ambientes de execução virtual
• Parrot:
Código executável.
Máquina virtual Parrot
Ambiente hospedeiro.
![Page 10: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/10.jpg)
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
... ...
![Page 11: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/11.jpg)
Estruturas e módulos usados em ambientes de execução
• Carregador de Opcode:
Memória
Código executável
Área de código
OPCODES
![Page 12: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/12.jpg)
Estruturas e módulos usados em ambientes de execução
• Just in Time
![Page 13: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/13.jpg)
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
![Page 14: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/14.jpg)
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
![Page 15: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/15.jpg)
Protótipo de Máquina virtual
• Memória
Memória
Código Dados Pilha
![Page 16: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/16.jpg)
Protótipo de Máquina virtual
• Execução de um código
Memória
Código executável
Área de código
OPCODES
![Page 17: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/17.jpg)
Protótipo de Máquina virtual
• Executado pelo executor de Opcodes.
• Exibido os valores dos registradores e das áreas da memória.
![Page 18: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/18.jpg)
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
![Page 19: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/19.jpg)
Demonstração da execução de códigos binários
![Page 20: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/20.jpg)
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.
![Page 21: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/21.jpg)
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++.
![Page 22: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/22.jpg)
Perguntas
![Page 23: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070310/552fc0fe497959413d8bbc8d/html5/thumbnails/23.jpg)
Obrigado