Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Arm64EC ("Compatibile con emulazione") consente di creare nuove app native o di eseguire la transizione incrementale di app x64 esistenti per sfruttare la velocità nativa e le prestazioni possibili con i dispositivi basati su Arm, tra cui un consumo di energia migliore, la durata della batteria e carichi di lavoro di intelligenza artificiale e Machine Learning accelerati.
Arm64EC è una nuova interfaccia binaria dell'applicazione (ABI) per le applicazioni che girano su dispositivi Arm con Windows 11. Si tratta di una funzionalità di Windows 11 che richiede l'uso di Windows 11 SDK e non è disponibile in Windows 10 su Arm.
Interoperabilità
Il codice compilato come Arm64EC interagisce con codice x64 in esecuzione nell'emulazione all'interno dello stesso processo. Il codice Arm64EC nel processo viene eseguito con prestazioni native, mentre qualsiasi codice x64 viene eseguito usando l'emulazione integrata con Windows 11. Anche se la tua applicazione si basa su dipendenze o plugin esistenti che non supportano ancora Arm, puoi iniziare a ricostruire parti della tua applicazione come Arm64EC per ottenere i vantaggi delle prestazioni native.
Arm64EC garantisce l'interoperabilità con x64 seguendo le convenzioni software x64, tra cui convenzione di chiamata, utilizzo dello stack, layout della struttura dei dati e definizioni del preprocessore. Tuttavia, il codice Arm64EC non è compatibile con il codice compilato come Arm64, che usa un set diverso di convenzioni software.
Lo stesso sistema operativo Windows 11 on Arm fa molto affidamento sull'interoperabilità di Arm64EC per consentire l'esecuzione di applicazioni x64. La maggior parte del codice del sistema operativo caricato da un'app x64 in esecuzione in Windows 11 in Arm viene compilata come Arm64EC, abilitando le prestazioni native per tale codice senza conoscere l'applicazione.
Un processo x64 o Arm64EC può caricare e chiamare sia binari x64 che Arm64EC, mentre un processo Arm64 può caricare solo binari Arm64. Entrambe le architetture possono caricare i binari di Arm64X poiché questi contengono codice sia per x64 che per Arm64.
| Architettura di processo | binario x64 | Binario Arm64EC | Binario Arm64 |
|---|---|---|---|
| x64/Arm64EC | Supported | Supported | Non supportato |
| Arm64 | Non supportato | Non supportato | Supported |
Allo stesso modo, al momento della compilazione, i binari Arm64EC possono collegarsi sia alle librerie x64 che a quelle Arm64EC, mentre i binari Arm64 possono collegarsi solo alle librerie Arm64.
| Architettura PE | lib x64 | Arm64EC lib | Arm64 lib |
|---|---|---|---|
| Arm64EC | Supported | Supported | Non supportato |
| Arm64 | Non supportato | Non supportato | Supported |
Per maggiori dettagli su come l'ABI di Arm64EC consente l'interoperabilità, vedi Comprendere l'ABI di Arm64EC e il codice assembly.
Usa Arm64EC per rendere più veloce un'applicazione esistente su Windows 11 on Arm
Arm64EC consente di eseguire la transizione incrementale del codice nell'app esistente da emulazione a nativa. In ogni fase del percorso, la tua applicazione continua a funzionare bene senza la necessità di essere ricompilata tutta in una volta.
L'immagine precedente mostra un esempio semplificato di un carico di lavoro x64 completamente emulato che richiede tempo che viene quindi migliorato in modo incrementale usando Arm64EC:
- Avvio di un carico di lavoro x64 completamente emulato
- Dopo aver ricompilato le parti più impegnative per la CPU come Arm64EC
- Dopo aver continuato a ricompilare altri moduli x64 nel tempo
- Risultato finale di un'applicazione completamente nativa Arm64EC
Ricompilando i moduli che richiedono più tempo o sono il più intensivo della CPU da x64 a Arm64EC, si ottiene il miglioramento maggiore per la quantità minima di lavoro in ogni passaggio.
Dipendenze dell'app
Quando si usa Arm64EC per ricompilare un'applicazione, usare le versioni arm64EC delle dipendenze, ma è anche possibile basarsi su versioni x64 delle dipendenze. Non è possibile usare le versioni arm64 delle dipendenze.
Qualsiasi codice x64, incluso il codice dalle dipendenze, in un processo Arm64EC viene eseguito in emulazione nell'app. Classificare in ordine di priorità le dipendenze a elevato utilizzo di CPU per passare da x64 a Arm64EC per migliorare le prestazioni dell'app.
Identificare i binari e le applicazioni Arm64EC
Le app in esecuzione in Windows 11 in Arm interagiscono con i file binari arm64EC come se fossero file binari x64. L'app non deve sapere in quale misura il codice nel file binario viene ricompilato come Arm64EC.
Per identificare questi file binari, è possibile visualizzarli in un prompt dei comandi per sviluppatori usando link /dump /headers.
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
8664 machine (x64) (ARM64X)
La combinazione di (x64) e (ARM64X) indica che alcune parti del file binario vengono ricompilate come Arm64EC, anche se il file binario sembra ancora x64. Un binario con un'intestazione della macchina che contiene (ARM64) e (ARM64X) è un file PE Arm64X che può essere caricato in applicazioni x64 e Arm64.
Puoi anche usare Gestione attività di Windows per identificare se un'app viene compilata come Arm64EC. Nella scheda Dettagli di Gestione attività la colonna Architettura mostra ARM64 (compatibile con x64) per le applicazioni il cui eseguibile principale è parzialmente o completamente compilato come Arm64EC.
Passaggi successivi
Consulta Iniziare con Arm64EC per scoprire come costruire o aggiornare le applicazioni Win32 utilizzando Arm64EC.