Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit Arm64EC ("Emulationskompatibel") können Sie neue native Apps erstellen oder vorhandene x64-Apps inkrementell umstellen, um die systemeigene Geschwindigkeit und Leistung zu nutzen, die mit armbetriebenen Geräten möglich ist, einschließlich besserer Stromverbrauch, Akkulaufzeit und beschleunigter AI- und ML-Workloads.
Arm64EC ist eine neue Binärschnittstelle (Application Binary Interface, ABI) für Apps, die auf Arm-Geräten mit Windows 11 ausgeführt werden. Es handelt sich um ein Windows 11-Feature, das die Verwendung des Windows 11 SDK erfordert und unter Windows 10 auf Arm nicht verfügbar ist.
Interoperabilität
Code, der als Arm64EC erstellt wurde, interagiert mit x64-Code, der unter Emulation innerhalb desselben Prozesses ausgeführt wird. Der Arm64EC-Code im Prozess wird mit systemeigener Leistung ausgeführt, während jeder x64-Code mithilfe einer Emulation ausgeführt wird, die in Windows 11 integriert ist. Auch wenn Ihre App auf vorhandenen Abhängigkeiten oder Plug-Ins basiert, die Arm noch nicht unterstützen, können Sie mit der Neuerstellung von Teilen Ihrer App als Arm64EC beginnen, um die Vorteile der systemeigenen Leistung zu erzielen.
Arm64EC garantiert die Interoperabilität mit x64 durch die Folgenden x64-Softwarekonventionen, einschließlich Aufrufkonventionen, Stapelnutzung, Datenstrukturlayout und Präprozessordefinitionen. Arm64EC-Code ist jedoch nicht mit Code kompatibel, der als Arm64 erstellt wurde und einen anderen Satz von Softwarekonventionen verwendet.
Das Windows 11 auf Arm-Betriebssystem selbst basiert stark auf der Interoperabilität von Arm64EC, um die Ausführung von x64-Anwendungen zu ermöglichen. Der meiste Betriebssystemcode, der von einer x64-App geladen wird, die unter Windows 11 auf Arm ausgeführt wird, wird als Arm64EC kompiliert und ermöglicht die systemeigene Leistung für diesen Code, ohne dass die Anwendung weiß.
Ein x64- oder Arm64EC-Prozess kann sowohl x64- als auch Arm64EC-Binärdateien laden und aufrufen, während ein Arm64-Prozess nur Arm64-Binärdateien laden kann. Beide Architekturen können Arm64X-Binärdateien laden, da sie Code für x64 und Arm64 enthalten.
| Prozessarchitektur | x64-Binärdatei | Arm64EC-Binärdatei | Arm64-Binärdatei |
|---|---|---|---|
| x64/Arm64EC | Supported | Supported | Nicht unterstützt |
| Arm64 | Nicht unterstützt | Nicht unterstützt | Supported |
Ebenso können Arm64EC-Binärdateien zur Buildzeit sowohl in x64- als auch in Arm64EC-Libs verknüpft werden, während Arm64-Binärdateien nur in Arm64-Libs verknüpft werden können.
| PE-Architektur | x64 lib | Arm64EC lib | Arm64 lib |
|---|---|---|---|
| Arm64EC | Supported | Supported | Nicht unterstützt |
| Arm64 | Nicht unterstützt | Nicht unterstützt | Supported |
Weitere Informationen dazu, wie die Arm64EC ABI Interoperabilität ermöglicht, finden Sie unter Grundlegendes zu Arm64EC ABI und Assemblycode.
Verwenden von Arm64EC, um eine vorhandene App unter Windows 11 auf Arm schneller zu machen
Arm64EC ermöglicht es Ihnen, den Code in Ihrer vorhandenen App inkrementell von emuliert in native Zu übertragen. Bei jedem Schritt auf dem Weg wird Ihre Anwendung weiterhin gut ausgeführt, ohne dass alle gleichzeitig neu kompiliert werden müssen.
Das vorhergehende Bild zeigt ein vereinfachtes Beispiel für eine vollständig emulierte x64-Workload, die eine gewisse Zeit in Anspruch nimmt und die dann schrittweise mit Arm64EC verbessert wird.
- Starten als vollständig emulierter x64-Workload
- Nach dem Neukompilieren der CPU-intensiven Teile als Arm64EC
- Nach dem erneuten Kompilieren weiterer x64-Module im Laufe der Zeit
- Endergebnis einer vollständig nativen Arm64EC-App
Durch erneutes Kompilieren der Module, die die meiste Zeit in Anspruch nehmen oder die CPU-intensivste von x64 auf Arm64EC sind, erhalten Sie die beste Verbesserung für den geringsten Aufwand bei jedem Schritt.
App-Abhängigkeiten
Wenn Sie Arm64EC zum Neuerstellen einer Anwendung verwenden, verwenden Sie Arm64EC-Versionen von Abhängigkeiten, aber Sie können auch auf x64-Versionen von Abhängigkeiten zurückgreifen. Arm64-Versionen von Abhängigkeiten können nicht verwendet werden.
Jeder x64-Code, einschließlich Code aus Abhängigkeiten, in einem Arm64EC-Prozess wird unter Emulation in Ihrer App ausgeführt. Priorisieren Sie die cpuintensiven Abhängigkeiten, um von x64 zu Arm64EC zu wechseln, um die Leistung Ihrer App zu verbessern.
Identifizieren von Arm64EC-Binärdateien und -Apps
Apps, die unter Windows 11 auf Arm ausgeführt werden, interagieren mit Arm64EC-Binärdateien, als ob sie x64-Binärdateien sind. Die App muss nicht wissen, inwieweit der Code in der Binärdatei als Arm64EC neu kompiliert wird.
Um diese Binärdateien zu identifizieren, können Sie in der Entwickler-Eingabeaufforderung link /dump /headers verwenden.
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
8664 machine (x64) (ARM64X)
Die Kombination von (x64) und (ARM64X) gibt an, dass ein Teil der Binärdatei als Arm64EC neu kompiliert wird, obwohl die Binärdatei immer noch x64 sein scheint. Eine Binärdatei mit einem Computerheader, der (ARM64) und (ARM64X) enthält, ist eine Arm64X PE-Datei , die in x64- und Arm64-Apps geladen werden kann.
Sie können auch den Windows-Task-Manager verwenden, um zu ermitteln, ob eine App als Arm64EC kompiliert wird. Auf der Registerkarte "Details " des Task-Managers zeigt die Spalte "Architektur " ARM64 (x64-kompatibel) für Anwendungen an, deren Hauptdatei teilweise oder vollständig als Arm64EC kompiliert ist.
Nächste Schritte
Informationen zum Erstellen oder Aktualisieren von Win32-Apps mit Arm64EC finden Sie unter Erste Schritte mit Arm64EC.
Windows on Arm