Создавая приложение для Windows 8, разработчики могут выбирать HTML / JavaScript, XAML / .Net (C # / VB) и XAML / C ++. Я хочу написать свое приложение на XAML / C ++.
Создание приложений в первых двух вариантах почти гарантирует, что ваше приложение будет работать на архитектурах Intel и ARM.
Но я слышал, что если я делаю определенные вещи в своем приложении C ++, я могу заставить приложение НЕ выполняться на архитектуре ARM. Но я не знаю деталей.
Кто-нибудь знает, чего следует избегать приложениям C ++ для Windows 8, чтобы они могли работать на ARM? Это архитектурное решение или просто различия в технике?
Для того, чтобы работать на каждой архитектуре, сначала нужно скомпилировать для каждой архитектуры. Если вы пишете стандартный C ++ (и если вы не полагаетесь на неопределенное поведение и / или поведение, специфичное для платформы), у вас все хорошо, что обычно вызывает проблемы при переносе между архитектурами:
(этот список является примером)
Обычно вы в безопасности, если воздерживаетесь от сумасшедшей арифметики указателей и приведения.
Я не знаю ничего, что могло бы заставить ваш код просто не выполняться или компилироваться в ARM (кроме встроенной сборки).
Однако есть вещи, которые вы можете сделать, что заставит ARM дать неправильный ответ.
Процессоры ARM «слабо упорядочены», эта недавняя статья дает вам низкую оценку
http://preshing.com/20121019/this-is-why-they-call-it-a-weakly-ordered-cpu
Подводя итог, можно сказать, что процессоры ARM могут изменить порядок доступа к памяти, и если вы не будете осторожны, это может дать вам разные результаты для архитектур x86 и ARM в многопоточных приложениях.
ARM поддерживается только для приложений Магазина Windows.
Системные Требования
Поддерживаемые архитектуры: Windows SDK для Windows 8 поддерживает
создание приложений для следующих архитектур: x86 x64 ARM
(Приложения Магазина Windows) Примечание. Windows SDK для Windows 8 не может быть
устанавливается непосредственно на архитектуру ARM. Вы можете установить
Windows SDK на платформе x86 или x64 для создания приложений
которые нацелены на архитектуру ARM.
Приложения MFC не будут работать в системах Windows 8 на базе ARM.
Вы можете создавать приложения в стиле Metro с использованием C ++, просто следуйте рекомендациям Metro по стилю.
Измените вашу программу, чтобы использовать HTML / CSS или XAML и WinRT API вместо MFC и Win32 API, если вы хотите, чтобы вся ваша программа поддерживала системы Windows 8 на базе ARM, а также системы на базе x86.