Sendo assim, para a implementação de uma máquina virtual é necessária a criação de uma infraestrutura básica, para a simulação de máquina real, independente da plataforma usada. Mas para que esse uso multiplataforma seja atendido, torna-se necessário delimitar cuidadosamente o funcionamento da máquina virtual, evitando e protegendo o hardware de operações perigosas, como por exemplo, acesso a regiões protegidas da memória.

Em primeiro lugar é necessário especificar um conjunto de instruções que determinem como os programas serão executados. Esse conjunto de instruções é determinado e codificado da mesma maneira que se faz para uma UCP. Desse conjunto de instruções surgirá a necessidade de implementar compiladores que gerem códigos com essas instruções a partir dos códigos fonte do programa, porém, estes compiladores extrapolam as fronteiras exigidas para uma máquina virtual e estão vinculados às linguagens de programação que usufruirão desta máquina virtual, o que indica que ela não está vinculada a uma ououtra linguagem de programação.

Consequentemente, ao compilarmos determinado programa, que tem por destino uma máquina virtual, será obtido um arquivo com a sequência de instruções suportadas pela máquina virtual. Este arquivo é chamado de bytecode. O bytecode, por sua vez, será tratado pela máquina virtual como se fosse um arquivo executável, usando áreas de memória do mesmo modo que ocorre em uma execução. Entretanto, ao invés da execução, a máquina virtual transformará as suas instruções em instruções suportadas pela arquitetura da máquina real. Será nesse momento que a máquina virtual tratará as peculiaridades da plataforma em que está trabalhando e é por isso que existe uma máquina virtual para cada plataforma.



Copyright © 2014 AIEC.