Что в C ++ может заставить приложения Windows 8 не работать на ARM?

Создавая приложение для Windows 8, разработчики могут выбирать HTML / JavaScript, XAML / .Net (C # / VB) и XAML / C ++. Я хочу написать свое приложение на XAML / C ++.

Создание приложений в первых двух вариантах почти гарантирует, что ваше приложение будет работать на архитектурах Intel и ARM.

Но я слышал, что если я делаю определенные вещи в своем приложении C ++, я могу заставить приложение НЕ выполняться на архитектуре ARM. Но я не знаю деталей.

Кто-нибудь знает, чего следует избегать приложениям C ++ для Windows 8, чтобы они могли работать на ARM? Это архитектурное решение или просто различия в технике?

17

Решение

Для того, чтобы работать на каждой архитектуре, сначала нужно скомпилировать для каждой архитектуры. Если вы пишете стандартный C ++ (и если вы не полагаетесь на неопределенное поведение и / или поведение, специфичное для платформы), у вас все хорошо, что обычно вызывает проблемы при переносе между архитектурами:

(этот список является примером)

  • Размеры int, long, long long (и других) могут отличаться для разных платформ
  • подпись чар
  • как структуры дополняются
  • двоичная разметка поплавков
  • порядок байтов
  • и многое другое.

Обычно вы в безопасности, если воздерживаетесь от сумасшедшей арифметики указателей и приведения.

3

Другие решения

Я не знаю ничего, что могло бы заставить ваш код просто не выполняться или компилироваться в ARM (кроме встроенной сборки).

Однако есть вещи, которые вы можете сделать, что заставит ARM дать неправильный ответ.

Процессоры ARM «слабо упорядочены», эта недавняя статья дает вам низкую оценку

http://preshing.com/20121019/this-is-why-they-call-it-a-weakly-ordered-cpu

Подводя итог, можно сказать, что процессоры ARM могут изменить порядок доступа к памяти, и если вы не будете осторожны, это может дать вам разные результаты для архитектур x86 и ARM в многопоточных приложениях.

1

ARM поддерживается только для приложений Магазина Windows.

Системные Требования

Поддерживаемые архитектуры: Windows SDK для Windows 8 поддерживает
создание приложений для следующих архитектур: x86 x64 ARM
(Приложения Магазина Windows) Примечание. Windows SDK для Windows 8 не может быть
устанавливается непосредственно на архитектуру ARM. Вы можете установить
Windows SDK на платформе x86 или x64 для создания приложений
которые нацелены на архитектуру ARM.

Вот ссылка на статью, на которую вы можете сослаться.

0

Приложения MFC не будут работать в системах Windows 8 на базе ARM.

Вы можете создавать приложения в стиле Metro с использованием C ++, просто следуйте рекомендациям Metro по стилю.

Измените вашу программу, чтобы использовать HTML / CSS или XAML и WinRT API вместо MFC и Win32 API, если вы хотите, чтобы вся ваша программа поддерживала системы Windows 8 на базе ARM, а также системы на базе x86.

0
По вопросам рекламы [email protected]