Visual C ++ не поддерживает встроенную сборку для процессоров x64 (или ARM) , потому что обычно использование встроенной сборки - плохая идея.
- Обычно компиляторы производят лучшую сборку, чем люди.
- Даже если вы можете создать лучшую сборку, чем компилятор, использование встроенной сборки обычно побеждает оптимизаторы кода любого типа. Несомненно, ваш код, оптимизированный для рук, может быть быстрее, но тот факт, что код вокруг него не может быть оптимизирован, обычно приводит к более медленной программе в целом.
- Встроенные функции компилятора доступны практически во всех основных компиляторах, которые позволяют получить доступ к расширенным функциям ЦП (например, SSE) способом, который совместим с языками C и C ++, и не побеждает оптимизатор.
Мне интересно, будет ли шанс, что 32-битные приложения ВСЕ должны будут быть обновлены до 64-битных в будущем.
Это зависит от вашей целевой аудитории. Если вы ориентируетесь на серверы, то да, разумно разрешить пользователям не устанавливать подсистему WOW64, потому что это сервер - вы знаете, что он, вероятно, не будет выполнять слишком много 32-битного кода. Я полагаю, что Windows Server 2008 R2 уже допускает это в качестве опции, если вы устанавливаете его как экземпляр «ядра сервера».
Поскольку производительность не имеет значения для моего приложения, поэтому использование дополнительных 64-битных регистров не имеет значения для меня. Существуют ли другие причины, по которым 32-битное приложение должно быть обновлено до 64-битного в будущем?
64 бит не имеет ничего общего с регистрами. Это связано с размером адресуемой виртуальной памяти.
Будет ли процесс 64-битного приложения отличаться от процесса 32-битного приложения кроме того, что 64-битное приложение использует некоторые регистры / инструкции, уникальные для 64-битных процессоров?
Скорее всего. 32-разрядные приложения ограничены в том, что они не могут отображать в память вещи размером более ~ 2 ГБ одновременно. 64-битные приложения не имеют этой проблемы. Даже если они не используют более 4 ГБ физической памяти, возможность адресации более 4 ГБ виртуальной памяти полезна для отображения файлов на диске в память и тому подобное.
Мое приложение должно взаимодействовать с другими компонентами ОС, например, драйверы, которые я знаю, должны быть 64-битными в 64-битных окнах. Будет ли мое 32-битное приложение совместимо с ними?
Это полностью зависит от того, как вы общаетесь с этими драйверами. Если это что-то вроде «именованного файлового интерфейса», тогда ваше приложение может оставаться 32-битным. Если вы попытаетесь сделать что-то вроде общей памяти («Да! Общая память доступна из пользовательского режима с помощью драйвера?!?»), Вам придется создать приложение как 64-битное.