Partilhar via


Solução de problemas de compatibilidade de programas no Arm

Os computadores da plataforma Arm fornecem ótima compatibilidade com o aplicativo e permitem que você execute seus aplicativos x86 win32 não modificados existentes. Os aplicativos Arm são executados nativamente sem qualquer emulação, enquanto os aplicativos x86 e x64 são executados em emulação em dispositivos Arm.

No entanto, às vezes, a emulação executa otimizações que não resultam na melhor experiência do usuário. Você pode usar a Solução de Problemas de Compatibilidade de Programas para alternar as configurações de emulação para seu aplicativo x86 ou x64, reduzindo as otimizações padrão e potencialmente aumentando a compatibilidade.

Iniciar a Solução de Problemas de Compatibilidade de Programas

Você inicia a Solução de Problemas de Compatibilidade de Programas manualmente da mesma maneira em qualquer computador Windows: clique com o botão direito do mouse em um arquivo executável (.exe) e selecione Solucionar problemas de compatibilidade. Em seguida, você terá a opção de Experimentar as configurações recomendadas para testar a execução do programa usando as configurações de compatibilidade recomendadas ou Solucionar problemas do programa para escolher as configurações de compatibilidade com base em problemas específicos que você notou.

Captura de tela das opções de compatibilidade de solução de problemas.

Se selecionar Solucionar problemas do programa, você terá a opção de selecionar:

  • O programa funcionava em versões anteriores do Windows, mas não poderá ser instalado ou executado agora
  • O programa abre, mas não é exibido corretamente
  • O programa requer permissões adicionais
  • Não vejo meu problema listado

Captura de tela das opções Quais problemas você percebe.

Todas as opções habilitam as configurações aplicáveis e aplicadas em computadores desktop com Windows. Além disso, a primeira, segunda e quarta opções aplicam as configurações de emulação Disable application cache e Disable hybrid execution mode, . (Consulte a tabela de configurações de emulação abaixo para obter descrições).

Alternância de configurações de emulação

Aviso

Alterar as configurações de emulação pode resultar em sua falha inesperada ou não iniciar em tudo.

Você pode alternar as configurações de emulação clicando com o botão direito do mouse no executável e selecionando Propriedades.

No ARM, uma seção intitulada Windows 10 no ARM ou Windows 11 no ARM estará disponível na guia Compatibilidade. Selecione Alterar configurações de emulação para iniciar uma janela Propriedades de Emulações.

Alterar captura de tela das configurações de emulação

Esta janela Propriedades de Emulações fornece duas maneiras de modificar as configurações de emulação. Você pode selecionar um grupo predefinido de configurações de emulação ou selecionar a opção Usar configurações avançadas para habilitar a escolha de configurações individuais.

As configurações de emulação a seguir reduzem as otimizações de desempenho em favor da qualidade e podem ser usadas para testar a compatibilidade do aplicativo x86 ou x64 ao ser executado no Windows no ARM.

Alterar captura de tela das configurações de emulação2

Selecione Usar configurações avançadas para escolher configurações individuais conforme descrito nesta tabela.

Configuração de emulação Resultado
Desabilitar cache de aplicativos O sistema operacional armazenará em cache os blocos de código compilados para reduzir a sobrecarga de emulação em execuções subsequentes. Essa configuração requer que o emulador recompile todo o código do aplicativo em runtime.
Desabilitar o modo de execução híbrido Os binários do CHPE (Compiled Hybrid Portable Executable) são binários compatíveis com x86 que incluem código Arm64 nativo para melhorar o desempenho, mas que podem não ser compatíveis com alguns aplicativos. Essa configuração impõe o uso de binários somente x86.
Proteções adicionais de emulação leve Uma atualização abrangente que afeta coisas como metadados voláteis que podem afetar o desempenho ao executar um aplicativo x86 ou x64 em emulação.
Suporte estrito a código de automodificação Habilite isso para garantir que qualquer código de automodificação tenha suporte correto na emulação. Os cenários de código de automodificação mais comuns são cobertos pelo comportamento padrão do emulador. Habilitar essa opção reduz significativamente o desempenho do código de automodificação durante a execução.
Desabilitar a otimização do desempenho da página RWX Essa otimização melhora o desempenho do código em páginas legíveis, graváveis e executáveis (RWX), mas pode ser incompatível com alguns aplicativos.
Desabilitar a otimização JIT (somente aplicativos x64) Isso não é mais usado e será removido em versões futuras da Solução de problemas.
Desabilitar a otimização de ponto flutuante (somente aplicativos x64) Verifique para emular o ponto flutuante x87 com uma precisão total de 80 bits, mas isso custará o desempenho. x87 é um coprocessador de ponto flutuante usado em alguns processadores x86 mais antigos para executar a aritmética de ponto flutuante usando um formato de ponto flutuante de 80 bits com maior precisão do que o formato de 32 bits ou 64 bits.

Você também pode alterar a forma como o aplicativo usa vários núcleos de CPU, selecionando entre operação multi-core rápida, estrita, muito rigorosa ou operação de núcleo único forçada. Teste a emulação de seus aplicativos ao executar o Windows no ARM com essas configurações se notar problemas de compatibilidade.

Captura de tela de configurações de vários núcleos

Essas configurações alteram o número de barreiras de memória usadas para sincronizar acessos de memória entre núcleos em aplicativos durante a emulação. Rápido é o modo padrão, mas as opções estritas e muito rigorosas aumentarão o número de barreiras. Isso torna o aplicativo mais lento, mas reduz o risco de erros do aplicativo. A opção single-core remove todas as barreiras, mas força todos os threads de aplicativos a serem executados em um único núcleo.

Se a alteração de uma configuração específica resolver seu problema, envie um -mail woafeedback@microsoft.com com detalhes, para que possamos incorporar seus comentários.