Я отвечаю за некоторый код уровня приложения, который я унаследовал, который имеет некоторый x86 ... код сборки Intel на основе 32-битных инструкций и адресации. Я собираюсь сделать предположение, что этот 32-битный ассемблерный код будет запущен при миграции 64-битной ОС Windows. Да?Миграция кода сборки от 32 до 64 бит вопрос
ответ
Скорее всего, он будет работать; 64-разрядная версия Windows поддерживает 32-разрядный режим для приложений и, как правило, очень надежна. (Очевидно, что эти вещи никогда не являются 100%, хотя - предостерегают emptor.)
Да. 32-разрядный код будет работать на 64-битных машинах, но они не смогут получить доступ к более чем 4 гигабайтам ОЗУ.
Возможно, он будет работать, но он не сможет воспользоваться преимуществами 64-разрядных расширений для x86 asm (x86-64, что и все «64-разрядные» версии Windows) или иметь возможность тесно взаимодействовать с библиотеками x64. Уровень WoW64 очень стабилен и 99,999% 32-разрядных приложений отлично работают в текущих «64-битных» операционных системах.
Если вы хотите перейти на настоящую 64-битную операционную систему (единственные, что я знаю, это Itanium-based, ia64), вам не повезло.
Редактирование: Кроме того, если вы хотите включить широкоэкранный доступ (в состоянии использовать> 4 ГБ ОЗУ), есть флаг заголовка PE, который вы можете перевернуть, который включит его и позволит ему адресовать большие объемы памяти.
Фантастический! Большое спасибо! Я новичок здесь (но имею хорошую репутацию на SO), желая, чтобы у меня была достаточно хорошая репутация, чтобы я мог проголосовать. – ddm
То же самое. Я не беспокоюсь о репутации, поэтому голосование не имеет значения, но если бы я ответил на него за вас, вы могли бы согласиться именно так, как знают люди. :) – ssube
Хорошо согласится, но это не очевидно, как это сделать (по крайней мере для меня). Отправить часто задаваемую ссылку :-) – ddm
Это будет запустите, если вы продолжаете строить 32-разрядные приложения x86. Однако, если вам нужно перенести код на 64-разрядный x86, скорее всего, код сборки не будет запускаться (и даже не компилироваться) из коробки.
И в зависимости от вашей цепочки инструментов, и если это встроенный ассемблер в коде C/C++ или нет, вы даже не сможете его вообще скомпилировать.
Не могли бы вы уточнить? Даже не компилировать? Это встроенный код C++. – ddm
Из памяти - по крайней мере, с помощью компилятора MS встроенный ассемблер просто не компилируется на 64-битной инструментальной цепочке, поскольку компилятор не поддерживает '__asm'. Я не знаю, страдают ли другие компиляторы, такие как GCC, от этой проблемы. –
Мы используем VS - возможно, 2010 к моменту передачи кода. Я так не с нетерпением жду повторного написания кода ацети, а не невозможного для меня, но не для задачи, за которую я подписался. – ddm
Это встроено в код C++. – ddm
Почему меня интересуют близкие голоса. – Sathya
Возможно, это будет не так просто, как я думал. Я получил ссылку от ответчика (извините - не уверен, кто как этот вопрос переместился) http://msdn.microsoft.com/en-us/library/hb5z4sxd.aspx Это означает, что «Inline ASM не поддерживается для x64 Используйте функции MASM или компилятора (x64 Intrinsics). " – ddm