Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Arm64EC ("Emulation Compatible") permite que você crie novos aplicativos nativos ou faça a transição incremental de aplicativos x64 existentes para aproveitar a velocidade e o desempenho nativos possíveis com dispositivos alimentados por Arm, incluindo melhor consumo de energia, vida útil da bateria e cargas de trabalho aceleradas de IA e ML.
Arm64EC é uma nova interface binária de aplicativo (ABI) para aplicativos executados em dispositivos Arm com Windows 11. É um recurso do Windows 11 que requer o uso do SDK do Windows 11 e não está disponível no Windows 10 no Arm.
Interoperabilidade
Código construído como Arm64EC interopera com código x64 em execução sob emulação dentro do mesmo processo. O código Arm64EC no processo é executado com desempenho nativo, enquanto qualquer código x64 é executado usando emulação que vem integrada com o Windows 11. Mesmo que seu aplicativo dependa de dependências ou plug-ins existentes que ainda não suportam Arm, você pode começar a reconstruir partes do seu aplicativo como Arm64EC para obter os benefícios do desempenho nativo.
Arm64EC garante a interoperação com x64 ao seguir as convenções de software x64, incluindo protocolo de chamada, uso de pilha, layout de estruturas de dados e definições de pré-processador. No entanto, o código Arm64EC não é compatível com o código construído como Arm64, que usa um conjunto diferente de convenções de software.
O próprio sistema operacional Windows 11 on Arm depende fortemente da interoperabilidade do Arm64EC para permitir a execução de aplicativos x64. A maioria do código do sistema operacional carregado por um aplicativo x64 em execução no Windows 11 no Arm é compilado como Arm64EC, permitindo o desempenho nativo para esse código sem que o aplicativo saiba.
Um processo x64 ou Arm64EC pode carregar e chamar binários x64 e Arm64EC, enquanto um processo Arm64 só pode carregar binários Arm64. Ambas as arquiteturas podem carregar binários Arm64X , pois eles contêm código para x64 e Arm64.
| Arquitetura de processo | binário x64 | Binário Arm64EC | Binário Arm64 |
|---|---|---|---|
| x64/Arm64EC | Supported | Supported | Não suportado |
| Arm64 | Não suportado | Não suportado | Supported |
Da mesma forma, em tempo de compilação, os binários Arm64EC podem ser vinculados a bibliotecas x64 e Arm64EC, enquanto os binários Arm64 só podem ser vinculados a bibliotecas Arm64.
| Arquitetura PE | x64 lib | | Arm64EC lib | Arm64 lib |
|---|---|---|---|
| Arm64EC | Supported | Supported | Não suportado |
| Arm64 | Não suportado | Não suportado | Supported |
Para obter mais detalhes sobre como a ABI Arm64EC permite a interoperabilidade, consulte Understanding Arm64EC ABI and assembly code.
Use Arm64EC para tornar um aplicativo existente mais rápido no Windows 11 no Arm
O Arm64EC permite que você faça a transição incremental do código em seu aplicativo existente de emulado para nativo. Em cada etapa ao longo do caminho, seu aplicativo continua a funcionar bem sem a necessidade de ser recompilado de uma só vez.
A imagem anterior mostra um exemplo simplificado de uma carga de trabalho x64 totalmente emulada que leva algum tempo e que é então incrementalmente melhorada usando o Arm64EC:
- Começando como uma carga de trabalho x64 totalmente emulada
- Depois de recompilar as partes mais intensivas de CPU como Arm64EC
- Depois de continuar a recompilar mais módulos x64 ao longo do tempo
- Resultado final de um aplicativo Arm64EC totalmente nativo
Ao recompilar os módulos que levam mais tempo ou são os que mais consomem CPU de x64 para Arm64EC, você obtém o máximo de melhorias para a menor quantidade de esforço em cada etapa.
Dependências do aplicativo
Quando utilizar o Arm64EC para reconstruir uma aplicação, utilize versões Arm64EC das dependências, mas também pode recorrer a versões x64 das dependências. Não é possível usar versões Arm64 das dependências.
Qualquer código x64, incluindo código de dependências, em um processo Arm64EC é executado sob emulação em seu aplicativo. Priorize as dependências mais intensivas de CPU para fazer a transição de x64 para Arm64EC para melhorar o desempenho do seu aplicativo.
Identificando binários e aplicativos Arm64EC
Os aplicativos executados no Windows 11 no Arm interagem com binários Arm64EC como se fossem binários x64. O aplicativo não precisa saber até que ponto o código no binário é recompilado como Arm64EC.
Para identificar esses binários, você pode vê-los em um prompt de comando do desenvolvedor usando link /dump /headers.
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
8664 machine (x64) (ARM64X)
A combinação de (x64) e (ARM64X) indica que alguma parte do binário é recompilado como Arm64EC, mesmo que o binário ainda pareça ser x64. Um binário com um cabeçalho de máquina que contém (ARM64) e (ARM64X) é um arquivo Arm64X PE que pode ser carregado em aplicativos x64 e Arm64.
Você também pode usar o Gerenciador de Tarefas do Windows para identificar se um aplicativo é compilado como Arm64EC. Na guia Detalhes do Gerenciador de tarefas, a coluna Arquitetura mostra ARM64 (compatível com x64) para aplicativos cujo executável principal é parcial ou completamente compilado como Arm64EC.
Próximos passos
Consulte Introdução ao Arm64EC para saber como criar ou atualizar aplicativos Win32 usando o Arm64EC.