{"id":30839,"date":"2022-08-09T15:00:54","date_gmt":"2022-08-09T15:00:54","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=30839"},"modified":"2022-08-18T07:36:06","modified_gmt":"2022-08-18T07:36:06","slug":"official-support-for-arm64ec-is-here","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/official-support-for-arm64ec-is-here\/","title":{"rendered":"Official Support for Arm64EC is Here\u00a0"},"content":{"rendered":"<p><span class=\"TextRun SCXW73064057 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW73064057 BCX8\">Last year, Microsoft announced x64 <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">compatibility<\/span><span class=\"NormalTextRun SCXW73064057 BCX8\"> for Windows <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">11<\/span><span class=\"NormalTextRun SCXW73064057 BCX8\"> on Arm, along with the new <\/span><\/span><a class=\"Hyperlink SCXW73064057 BCX8\" href=\"https:\/\/aka.ms\/arm64ecannounceblog\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"TextRun Underlined SCXW73064057 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW73064057 BCX8\" data-ccp-charstyle=\"Hyperlink\">Arm64EC ABI<\/span><\/span><\/a><span class=\"TextRun SCXW73064057 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW73064057 BCX8\">, a new way to <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">bring apps to Windows on Arm<\/span><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW73064057 BCX8\">. <\/span><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW73064057 BCX8\">With<\/span><span class=\"NormalTextRun SCXW73064057 BCX8\"> Arm64EC you can mix Arm and x64 code in the same process<\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">, allowing you to <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">port <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">existing <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">x64 <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">apps <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">to <\/span><span class=\"NormalTextRun CommentStart CommentHighlightPipeRest CommentHighlightRest SCXW73064057 BCX8\">A<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW73064057 BCX8\">rm<\/span> <span class=\"NormalTextRun CommentHighlightPipeRest SCXW73064057 BCX8\">in an incremental <\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">way<\/span><span class=\"NormalTextRun SCXW73064057 BCX8\">.<\/span> <span class=\"NormalTextRun SCXW73064057 BCX8\">We also announced experimental support for <\/span><\/span><a class=\"Hyperlink SCXW73064057 BCX8\" href=\"https:\/\/devblogs.microsoft.com\/cppblog\/arm64ec-support-in-visual-studio\/\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"TextRun Underlined SCXW73064057 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW73064057 BCX8\" data-ccp-charstyle=\"Hyperlink\">Arm64EC development in Visual Studio<\/span><\/span><\/a><span class=\"TextRun SCXW73064057 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW73064057 BCX8\">.<\/span><\/span><span class=\"EOP SCXW73064057 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Now, after a year of bug fixes and product stabilization, we are here to announce that this toolset is leaving experimental mode in the 17.3 release, making it possible to build fully-supported Arm64EC applications for Windows 11 on Arm. We hope that using Arm64EC makes it easier for developers to target Windows on Arm, especially for applications that are blocked today from moving to Arm due to x64 plugins or dependencies.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h1 aria-level=\"1\"><span data-contrast=\"none\">Learn More about Arm64EC<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Want to learn more about Arm64EC to determine if it is the best solution for your porting efforts? We have several resources detailing how Arm64EC works and how to use it, compiled here for your convenience.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ol>\n<li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">For getting started on building Arm64EC applications, check out this <\/span><a href=\"https:\/\/aka.ms\/arm64ecgettingstarted\"><span data-contrast=\"none\">documentation<\/span><\/a><span data-contrast=\"auto\"> on how to get the tools you\u2019ll need.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">To see an end-to-end example of using x64 plugins for digital audio workstations, check out this post: <\/span><a href=\"https:\/\/devblogs.microsoft.com\/windows-music-dev\/load-x64-plug-ins-like-vsts-from-your-arm-code-using-arm64ec\"><span data-contrast=\"none\">Load x64 Plug-ins (like VSTs) from your Arm Code using Arm64EC<\/span><\/a><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">You can also build binaries that can be used by both Arm64 and Arm64EC\/x64 processes on Windows on Arm devices. To learn more about this binary format and how to build them, check out this <\/span><a href=\"https:\/\/aka.ms\/arm64xbinaryintro\"><span data-contrast=\"none\">documentation on Arm64X binaries<\/span><\/a><span data-contrast=\"auto\">.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">For a more in-depth understanding of Arm64EC as an ABI and how the interoperability with emulated x64 works, check out the documentation on <\/span><a href=\"https:\/\/docs.microsoft.com\/windows\/arm\/arm64ec-abi\"><span data-contrast=\"none\">Arm64EC assembly<\/span><\/a><span data-contrast=\"auto\"> and the <\/span><a href=\"https:\/\/docs.microsoft.com\/cpp\/build\/arm64ec-windows-abi-conventions\"><span data-contrast=\"none\">ABI<\/span><\/a><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ol>\n<h1 aria-level=\"1\"><span data-contrast=\"none\">What\u2019s Next?<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">We are planning continued support for the toolchain in upcoming releases, with the intent of supporting the <code>__vectorcall<\/code> calling convention in Arm6EC as well as tackling performance optimizations. If you want to get in contact with us regarding issues with the toolchain or any feedback about its usage, we\u2019re always listening on Developer Community.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last year, Microsoft announced x64 compatibility for Windows 11 on Arm, along with the new Arm64EC ABI, a new way to bring apps to Windows on Arm. With Arm64EC you can mix Arm and x64 code in the same process, allowing you to port existing x64 apps to Arm in an incremental way. We also [&hellip;]<\/p>\n","protected":false},"author":97317,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-30839","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus"],"acf":[],"blog_post_summary":"<p>Last year, Microsoft announced x64 compatibility for Windows 11 on Arm, along with the new Arm64EC ABI, a new way to bring apps to Windows on Arm. With Arm64EC you can mix Arm and x64 code in the same process, allowing you to port existing x64 apps to Arm in an incremental way. We also [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/30839","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/97317"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=30839"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/30839\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=30839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=30839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=30839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}