Replies: 3 comments 2 replies
-
/cc @jkotas Is ARM64EC applicable to CLR? I also wonder if ARM64 CLR can P/Invoke with x64 native libraries. |
Beta Was this translation helpful? Give feedback.
1 reply
-
If you really need ARM64X (say you are building an in-process COM server), you can use ARM64X forwarder and point to x64 and ARM64 versions of the DLL respectively. https://learn.microsoft.com/en-us/windows/arm/arm64x-pe#arm64x-for-use-with-middleware-or-plugins |
Beta Was this translation helpful? Give feedback.
0 replies
-
arm64ec is a COMPLETE MISTAKE by breaking intel APX |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
ARM64EC is a new application binary interface (ABI) for apps running on ARM devices with Windows 11. An ARM64EC process can load and run x64 code, and thus can host the .NET runtime and libraries that are compiled to target x64. However, running the x64 version of .NET inside an ARM64EC process has a performance cost - this code runs under emulation and not at full speed and the various optimizations that have been made in .NET for ARM64 would not be applied.
It seems like most of the operating system binaries under Windows 11 for ARM are built as dual-mode ARM64X binaries, so can be loaded into both ARM64 and ARM64EC processes. A similar requirement holds for .NET in order to achieve full performance on this platform. We would like a .NET process to run as an ARM64EC process so that it can be compatible with x64 native libraries, and we would like to be able to host the ARM version of the .NET runtime inside an ARM64EC process, instead of being forced to run the x64 version of the runtime under emulation, as is currently the case. Similarly, for NativeAOT compilation we would like to have the option to target ARM64EC or ARM64X binary format.
Beta Was this translation helpful? Give feedback.
All reactions