Emulação de processador

Definição - o que significa emulação de processador?

A emulação de processador é um processo e tecnologia de virtualização que permite que o software que foi compilado para um processador ou sistema operacional (SO) específico seja executado em um sistema diferente com um processador e sistema operacional diferentes. Isso é feito traduzindo dinamicamente as instruções do processador e todas as chamadas de sistema operacional associadas de um programa nas instruções do processador e do sistema operacional onde está sendo executado.

Definirtec explica emulação de processador

A emulação de processador permite a execução de programas escritos para um processador para executar em um processador diferente com uma arquitetura e conjunto de instruções diferentes. Um bom exemplo básico é um emulador de console de jogo, que permite aos usuários jogar jogos de console, como Nintendo Entertainment System e jogos de PlayStation em seu PC. O processador usado por um console de jogo é muito diferente daquele de um PC, portanto, para poder jogar jogos de console em um PC, o processador do console de jogo deve ser emulado.

A ideia básica é que todas as ações e comportamentos individuais do programa que precisam ser executados devem ser convertidos para o conjunto de instruções e / ou chamadas de sistema operacional equivalentes do sistema host. O objetivo principal é executar código que modifique os estados do processador e interaja com o hardware, e isso deve ser feito para cada instrução do programa em execução.

Maneiras de lidar com a emulação do processador:

  • Recompilação dinâmica - uma lista de operações é criada executando o código e, quando uma instrução de desvio é alcançada, a lista é compilada para o código de instrução da plataforma host. Isso é então armazenado em cache para uso futuro. Como alternativa, cada código pode simplesmente ser compilado em tempo real, mas essa abordagem é difícil de otimizar.
  • Recompilação estática - também conhecida como tradução binária estática, em que o código é primeiro convertido no código da máquina ou arquitetura de destino sem executar o código, como é feito na recompilação dinâmica. Podem surgir problemas, no entanto, uma vez que nem todos os códigos alvo podem ser determinados pelo tradutor durante o tempo de compilação, uma vez que alguns deles só podem ser encontrados em ramos indiretos, que, por sua vez, só podem ser determinados em tempo de execução.
  • Interpretação - Cada código é lido da memória usando o ponteiro de instrução e, em seguida, executado de acordo com o conjunto de instruções da CPU do computador host. Em outras palavras, as instruções são traduzidas uma a uma e então executadas nativamente. A maior desvantagem aqui é o desempenho.