Подтвердить что ты не робот

Что на С++ может сделать приложения Windows 8 не запущены на ARM?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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