Microsoft добавила поддержку эмуляции x64 в Windows 10 на ARM
10 декабря 2020 года Microsoft представила поддержку эмуляции x64 в Windows 10 на ARM. Новая функциональность уже доступна бета-тестерам в сборке Windows 10 Insider Preview Build 21277 (полный номер сборки 21277.1000.rs_prerelease.201207-1443).
Пользователи после установки сборки Windows 10 Insider Preview Build 21277 могут протестировать работоспособность эмуляции x64 в Windows 10 на ARM, установив в системе x64 приложения из магазина Microsoft Store или из любого другого места по своему выбору.
Microsoft предупредила, что для нормальной работы поддержки эмуляции x64 в Windows 10 на ARM и наилучшей производительности x64 приложений на устройствах Samsung Galaxy Book S, Lenovo Flex 5G, Acer Spin 7 и Microsoft Surface Pro X пользователям необходимо установить обновленную предварительную версию графического драйвера Qualcomm Adreno.
Кроме того, Microsoft советует установить предварительную версию пакета ARM64 C++, если тестерам необходимо в системе проверить одновременное выполнение С++ приложений ARM64 и x64.
Microsoft пояснила, что проверила работоспособность эмулятора на Autodesk Sketchbook, Rocket League и Chrome, которые ранее работали на ARM64 как 32-разрядные приложения. Теперь они могут работать в Windows 10 на ARM как 64-разрядные приложения с использованием новой возможности эмуляции x64.
Microsoft рассказала, что будет расширять возможности эмулятора x64 в Windows 10 на ARM. Компания напомнила, что приложения ARM64 полностью поддерживаются в Windows SDK и Visual Studio 2017. Microsoft рекомендует разработчикам перекомпилировать свои приложения для ARM64.
Microsoft проинформировала, что когда компания впервые запустила Windows 10 на ARM в конце 2017 года, в длинном списке приложений, необходимых ее клиентам, преобладали 32-разрядные приложения x86. Поэтому разработчики Microsoft сосредоточили все свои усилия на создании эмулятора x86, который мог бы беспрепятственно запускать большую экосистему приложений Windows. В настоящее время экосистема приложений Windows переместилась в сторону 64-разрядных приложений x64. Теперь клиенты компании все чаще просят, чтобы x64 приложения полноценно и быстро работали на ARM64.
В конце сентября 2020 года Microsoft объявила, что добавит эмуляцию x64-приложений для ARM-систем на Windows 10 в ноябре. Компания уточнила, что для широкого круга пользователей эта функциональность станет доступна в 2021 году.
Какие приложения не пойдут на Windows 10 для ARM-процессоров
Microsoft уже второй раз пытается заставить операционную систему Windows работать на мобильных процессорах. Первая попытка — Windows RT — не получила широкого отклика у покупателей, так как по сути от привычной Windows там был только «фасад», а все приложения для неё разработчики должны были адаптировать заново. То есть вы получали планшет Windows без возможности запускать большинство привычных программ для Windows.
HP ENVY x2 на базе Qualcomm Snapdragon 835
В этот раз Microsoft скооперировалась с производителем ARM-процессоров — Qualcomm, чипы которых стоят в львиной доле смартфонов и планшетов. И в этот раз целью было перенести Windows на ARM, но так, чтобы не нужно было писать под неё софт заново.
ASUS NovaGo на базе Qualcomm Snapdragon 835
Однако чем ближе дата появления устройств на рынке, тем больше утекает подробностей о совместимости адаптированной под ARM операционки. Например, недавно Microsoft опубликовала список ограничений портированной на ARM Windows. Правда, вскоре удалила, но интернет помнит всё. Итак, вот что не будет работать на ноутбуках с Qualcomm Snapdragon 835 (и другими ARM-чипами, если Microsoft и Qualcomm пойдут дальше).
1. Некоторые игры
Нельзя сказать, что это большая потеря: Snapdragon 835 хоть и был до недавнего времени топовым процессором для смартфонов, полноразмерную ОС для десктопов он тянет уже не так бодро. Тем более, речь идёт не обо всех играх, а только о тех, которые используют OpenGL старше версии 1.1. Правда, OpenGL версии 1.2 вышла еще 20 лет назад. А ещё работать откажут игры, которые имеют встроенные механизмы защиты от читеров.
2. Приложения, которые вносят изменения во внешний вид Windows
Контекстное меню с пунктами, которые встроены сторонним приложением
Например, это все приложения, которые встраиваются в контекстное меню, например, Dropbox, WinRaR, Sublime. В лучшем случае не будет работать именно изменение контекстного меню, но это может нарушить и работу самой программы.
3. 64-битные приложения
Столько лет мы переходили-переходили на 64-битные приложения, переходили-переходили, а вот в версии Windows для ARM они поддерживаться не будут. Поэтому необходимо будет пользоваться 32-разрядной версией. К счастью, пока еще проще встретить программу, которая не имеет 64-битной версии, чем 32-битной.
4. 32-битные драйвера
Одновременно с тем устройства, которые не имеют 64-разрядной версии драйверов, не смогут работать с «новой» операционкой. Но это было повсеместной проблемой во времена Windows Vista, а сейчас среди современных гаджетов таких уже и не встретишь. Проблемы будут только с подключением «древностей».
5. Приложения, которые еще не в курсе, что Windows на ARM — это не обязательно Windows Mobile
В природе встречаются приложения для Windows, которые по умолчанию считают, что если устройство работает на ARM-процессоре, то, значит, это устройство под управлением Windows Mobile. И при попадании на адаптированную под ARM Windows будет показывать вам интерфейс, рассчитанный на смартфон.
Какие приложения работают на Windows 10 для ARM-процессоров
Один из наиболее распространённых вопросов. Мы можем условно поделить Windows 10 по трём критериям: архитектура процессора, разрядность и редакция:
Если говорить про разрядности, то Windows 10 ARM существует только в виде 64-битной версии и предназначена для 64-битных процессоров на архитектуре ARM.
Какие приложения будут работать на Windows 10 для ARM
Как и сама операционная система Windows, приложения делятся по критериям поддерживаемой архитектуры процессоров и разрядности. Разработчик любой программы может скомпилировать её (создать установочный файл) под конкретные варианты процессоров. При этом ПО, собранное для одной архитектуры чипов, не заработает на другой из-за архитектурных различий.
На сегодняшний день классический софт (распространяемый в виде exe, msi и других файлов) создан для x86-процессоров Intel и AMD и просто так не запустится на ARM-чипах (Qualcomm Snapdragon, к примеру). Microsoft понимает важность старых программ для пользователей, поэтому оснастила Windows 10 для ARM специальным эмулятором для запуска x86-приложений. Благодаря этому вы можете запускать классический x86-софт даже на ARM-процессоре.
Поддерживает ли Windows 10 для ARM Win32 API
Какие разрядности программ поддерживаются на Windows 10 для ARM
Как мы уже писали выше, софт делится не только по критерию архитектуры процессора, но и по разрядности. В этом случае принято употреблять следующие сокращения:
Разберёмся, приложения какой разрядности поддерживаются на компьютерах с Windows 10 на базе ARM-процессоров.
ARM-приложения
На данный момент сама система для ARM-чипов и все встроенные в неё утилиты являются 64-битными (ARM64), а приложения в Microsoft Store, поддерживающие архитектуру ARM, 32-битными (ARM32). Microsoft только планирует добавить поддержку ARM64 в Microsoft Store ближе к концу 2018 года.
x86-приложения
Выводы
Задавайте интересующие вас вопросы в комментариях.
Windows на архитектуре ARM
Windows могут выполняться на компьютерах, работающих под управлением процессоров ARM64. Архитектура процессора ARM, характерная для энергосбережения, позволяет этим компьютерам работать со временем жизни аккумулятора и интегрированной поддержкой сетей мобильных данных. Эти компьютеры также обеспечивают высокую совместимость приложений и позволяют запускать существующие приложения Win32 x86 без изменений.
мы используем термин « ARM » в качестве краткой формы для компьютеров, на которых работает настольная версия Windows ARM64 (также называемых AArch64) процессорами. Мы используем здесь термин ARM32 в качестве сокращения для 32-разрядной архитектуры ARM (которую в другой документации обычно называют ARM).
Приложения и взаимодействия в ARM
встроенные возможности Windows, приложения и драйверы
Приложения универсальной платформы Windows (UWP)
Windows на ARM запускает все приложения UWP для x86, ARM32 и ARM64 из Microsoft Store. Приложения ARM32 и ARM64 работают изначально без эмуляции, тогда как приложения x86 работают в режиме эмуляции. Разработчикам UWP необходимо отправить пакет ARM для своего приложения, поскольку это обеспечит максимальное удобство использования приложения на устройстве. Дополнительные сведения см. в статье Архитектуры пакета приложения.
чтобы создать приложение UWP, предназначенное для платформы ARM64, необходимо иметь Visual Studio 2017 версии 15,9 или более поздней или Visual Studio 2019. дополнительные сведения см. в записи блога: официальная поддержка Windows 10 для разработки ARM.
Windows в ARM поддерживает приложения UWP x86, ARM32 и ARM64 из Store на устройствах ARM64. Когда пользователь скачивает приложение UWP на устройстве ARM64, ОС автоматически устанавливает оптимальную версию доступного приложения. Если вы отправляете в магазин версии x86, ARM32 и ARM64, ОС автоматически установит версию ARM64 приложения. Если вы отправляете только версии x86 и ARM32 для приложения, ОС установит версию ARM32. Если вы отправляете только версию x86 приложения, ОС установит эту версию и запустит ее в процессе эмуляции. Дополнительные сведения об архитектурах см. в статье Архитектуры пакета приложения.
приложения Win32;
помимо приложений UWP, Windows на ARM могут также запускать приложение win32 desktop апппс, скомпилированное изначально для ARM64, а также существующие приложения x86 win32 без изменений, с хорошей производительностью и удобством работы пользователей, точно так же, как любой компьютер. Эти приложения Win32 x86 не нужно перекомпилировать для ARM и даже не осознают, что они работают на процессоре ARM.
приложения для x86-64
Начальная поддержка приложений x86-64 была добавлена в сборку 21277, и сейчас она разрабатывается. Если 64-разрядная версия приложения Win32 не работает, в подавляющем большинстве приложений также доступны версии x86. при выборе архитектуры приложения просто выберите 32-разрядную версию x86 для запуска 32-разрядной версии приложения на Windows 10 на компьютере ARM.
Файлы для загрузки
Visual Studio 2019 предоставляет несколько загружаемых средств для Windows на ARM. пользователи, по-прежнему использующие Visual Studio 2017, могут использовать установщик для поиска и установки сопоставимых средств и пакетов. обратите внимание, что для выполнения этих действий необходимо использовать Visual Studio 2019.
Распространяемый компонент Visual C++
Удаленные средства
использование ARM64EC для создания приложений для Windows 11 на устройствах ARM
ARM64EC («совместимая с эмуляцией») — это новый двоичный интерфейс приложения (ABI) для создания приложений для Windows 11 на ARM. С помощью ARM64EC можно создавать новые собственные приложения или постепенно переносить существующие приложения в собственную производительность на ARM. дополнительные сведения о ARM64EC можно узнать в блоге Windows разработчиков.
Приступая к созданию приложений Win32 как ARM64EC
Чтобы приступить к созданию приложений Win32 как ARM64EC, необходимо установить следующие компоненты:
после установки пакета SDK для программы предварительной оценки Windows и Visual Studio Preview выполните следующие действия, чтобы добавить платформу ARM64EC.
в Visual Studio Installer добавьте средства ARM64EC, выполнив поиск по отдельным компонентам и установив флажок MSVC v142-VS 2019 C++ ARM64EC build tools (в настоящее время помеченный как экспериментальный).

После установки средств и пакета SDK создайте новый проект C++ или откройте существующий.
если в проекте используется более старый пакет SDK или более старая версия MSVC, необходимо перенацелить решение на использование последней версии каждого из них.
Чтобы добавить платформу ARM64EC, сделайте следующее:

При необходимости можно оставить части решения в виде x64. однако чем больше код создается как ARM64EC, тем больше код будет выполняться с собственной производительностью на Windows 11 на ARM. Для всех внешних зависимостей убедитесь, что проект ссылается на версии x64 или ARM64EC этих проектов.
выбрав новую платформу решения, выберите сборка в Visual Studio, чтобы начать создавать двоичные файлы ARM64EC.
