Compartilhar via


Como a emulação 6 funciona no ARM

A emulação disponibiliza o rico ecossistema de aplicativos do Windows no Arm, para que você possa executar os aplicativos de que você gosta sem modificações. A emulação é transparente para você e faz parte do Windows; ele não exige que nenhum componente extra seja instalado.

O Windows 11 no Arm dá suporte à emulação de aplicativos x86 e x64. O desempenho é aprimorado com a introdução do novo emulador Prism no Windows 11 24H2. O Windows 10 no Arm também dá suporte à emulação, mas apenas para aplicativos x86.

Prism

Prism é o novo emulador incluído no Windows 11 24H2. Em comparação com a tecnologia de emulação anterior incluída no Windows, ela inclui otimizações significativas que melhoram o desempenho e o menor uso da CPU de aplicativos em emulação.

O Prism é otimizado e ajustado especificamente para processadores Qualcomm Snapdragon. Alguns recursos de desempenho no Prism exigem recursos de hardware disponíveis apenas na série Snapdragon X, mas o Prism está disponível para todos os Windows 11 compatíveis com dispositivos Arm com Windows 11 24H2.

Como funciona a emulação

A emulação funciona como um simulador de software, compilando blocos just-in-time de instruções x86 em instruções Arm64 com otimizações para melhorar o desempenho do código Arm64 emitido.

Um serviço armazena em cache esses blocos de código traduzidos para reduzir a sobrecarga da tradução de instruções e possibilitar a otimização quando o código for executado novamente. Os caches são produzidos para cada módulo para que outros aplicativos possam usá-los na primeira inicialização.

Para aplicativos x86, a camada WOW64 do Windows permite que o código x86 seja executado na versão Arm64 do Windows, assim como permite que o código x86 seja executado na versão x64 do Windows. Isso significa que os aplicativos x86 no Arm são protegidos com redirecionamento do sistema de arquivos e do registro.

Para aplicativos x64, não há nenhuma camada WOW64 e nenhum registro ou pasta separada de binários do sistema Windows. Em vez disso, os binários do sistema são compilados como arquivos Arm64X PE que podem ser carregados em processos x64 e Arm64 do mesmo local sem a necessidade de redirecionamento do sistema de arquivos. Isso significa que os aplicativos x64 podem acessar todo o sistema operacional, tanto o sistema de arquivos quanto o registro, sem a necessidade de código especial.

Observe que a emulação dá suporte apenas ao código do modo de usuário e não dá suporte a drivers. Todos os componentes do modo kernel devem ser compilados como Arm64.

Detectando emulação

Um aplicativo x86 ou x64 não sabe que ele está em execução em um computador Windows no Arm, a menos que chame APIs específicas que foram projetadas para transmitir conhecimento do host Arm64, como IsWoW64Process2. Os aplicativos em emulação que consultam detalhes do processador, incluindo metadados ou capacidades de recursos, recebem detalhes correspondentes ao processador virtual emulado. Por motivos de compatibilidade, a API GetNativeSystemInfo também retorna detalhes do processador emulado quando executado de um aplicativo em emulação.

Para aplicativos que procuram detectar os recursos de emulação do sistema operacional, use a API GetMachineTypeAttributes.

Atualizando para dar suporte a uma versão do Arm do seu aplicativo

Embora executar seu aplicativo em emulação em dispositivos Arm seja um ótimo lugar para começar, seu aplicativo se beneficia de ganhos de desempenho nativos e das qualidades exclusivas de dispositivos com tecnologia Arm ao recompilar para adicionar suporte ao Arm.

Para obter diretrizes sobre como criar uma versão do Arm de seus aplicativos e quais vantagens, desafios e opções de ferramentas estão envolvidas, consulte Adicionar suporte do Arm ao seu aplicativo Windows. Este artigo também aborda o suporte disponível para criar uma versão do Arm do seu aplicativo e quaisquer dependências relacionadas.