Есть причина, мы можем запустить приложение 32bit на 64-битной ОС из-за x86-64?
Да по большей части. Но позвольте мне вкратце объяснить, что 32bit/64bit не обязательно ссылается на размер регистра, потому что вопрос будет о том, какой регистр (тип) вы говорите? Точнее, 32bit/64bit относятся к ширине адресной шины (то есть, сколько памяти может быть адресовано) или, другими словами, размер указателя в C. Затем, в свою очередь, 32/64bit будет (косвенно) ссылаться на размер слова, а также размер основного «целочисленного» типа машины. В любом случае, 32-битный/64-битный должен делать больше с адресной памятью, но также связан с размером слова (sizeof (int)) и, в свою очередь, размером регистра. Итак, вернемся к вопросу. В 32 битных двоичных файлах все еще могут работать 64-битные системы. Да, потому что «новый» x86-64 только расширяет исходный x86 ISA (с большим количеством инструкций, конечно). Таким образом, ваш старый 32-битный двоичный файл (который состоит из инструкций x86) все еще может быть запущен в новой системе.
Если да, то почему 32-битные приложения иногда несовместимы в 64-битных окнах ? Зачем нам WOW64? (Иногда нас просят выбрать версия для установки.)
Да, существует целый ряд случаев, когда старый x86 32bit двоичный/приложение не будет работоспособной в новой 64-битной системе. Например, ваш двоичный файл может содержать одну или несколько инструкций, которые (по какой-либо причине) больше не поддерживаются (см. Примеры this). Или, если вашему двоичному файлу/приложению требуется использование 32-битной библиотеки, которая не существует в вашей новой системе. В этом случае ваша система будет жаловаться на то, что вы не сможете запустить это 32-битное приложение.
Имеет ли набор инструкций x64 любой другой набор команд, кроме x86-64? Некоторые люди сказали мне, что x64 просто расширяет диапазон памяти, а набор команд у них одинаковый. Это верно?
Во-первых, Intel64, AMD64, x86-64, x64 все в значительной степени (более или менее) относятся к одной и той же вещи! Да, набор инструкций x86-64 является ОГРОМНЫМ и регулярно получает расширения (подумайте о MMX, SSE, AVX .... и т. Д.).Каждое расширение представляет собой набор мини-инструкций. Посмотрите набор инструкций x86 в Википедии, вы должны получить массу информации.
Большое вам спасибо за ваш ответ – jay