Из того, что вы связали:
x64 на x86 (кросс-компилятор x64)
Позволяет
вам создать выходные файлы для x64.
Эта версия cl.exe работает как
32-битный процесс, родной для x86
машина и под WOW64 на 64 бит
Вдова операционная система.
x64 на x64
Позволяет создать вывод
файлы для х64. Эта версия cl.exe
работает как родной процесс на x64
машина.
Перефразировано:
Если вы используете x86_amd64, то вы, как правило, разрабатываете на компьютере с архитектурой x86 и хотите создавать файлы x64, которые изначально работают на x64. Вы также можете использовать эту опцию на компьютере x64, но ваш компилятор будет работать под эмуляцией WOW64.
Если вы используете AMD64, то вы разрабатываете на компьютере x64 и хотите создать файлы x64, которые изначально работают на x64. Компилятор изначально работает в x64. Эта опция более эффективна для сборки программ x64.
Вы можете задаться вопросом, почему вы когда-либо разрабатывали программу x64 на компьютере x86, поскольку вы не можете запустить ее, вы не можете ее отладить. Ну, это все еще полезно, например, если у вас есть сервер сборки x86, и этот сервер сборки должен генерировать выходные данные как x86, так и x64.
Как возможно, чтобы компилятор работал под x64, если это программа на основе x86 (x86_amd64)? По этой же причине вы можете запускать любую x86-программу на своем x64-компьютере ... Благодаря эмуляции WOW64.
Что такое эмуляция WOW64:
Эмуляция WOW64 происходит при запуске программы x86 на компьютере x64 (или IA64). WOW64 означает Windows 32 на Windows 64. Это слой эмуляции на компьютерах с архитектурой x64, позволяющий выполнять программы для архитектуры x86.
Операции вашей файловой системы будут перенаправлены в папки WOW64, а ваш реестр будет также перенаправлен на подузел. Например, когда вы пытаетесь получить папку для программных файлов, она вернет c:\program files (x86)\
, если вы используете WOW64, но вернет c:\program files\
, если вы используете x64.
Другой пример, для реестра, если вы попытаетесь записать в HKLM\Software\Something
, он действительно перенаправит вас на HKLM\SOFTWARE\Wow6432Node\Something
без ведома вашей программы x86.
Запуск собственной сборки x64 будет более эффективным, чем запуск через эмуляцию WOW64. Почему? Потому что у вас нет этого дополнительного уровня эмуляции для преобразования ваших 32-битных вызовов в 64-битные.
Кстати, если вы работаете в 64-разрядной версии Windows, вы можете видеть, какие процессы выполняются через WOW64, потому что к имени процесса в списке процессов добавляется * 32.