Невозможно использовать инструкции Amd64 (длинный режим) в 32-разрядной ОС общего назначения (без модификации ядра / специальных драйверов / гипервизора).
Это потому, что:
1) для использования родных 64-битных инструкций необходимо переключиться в длинный режим.Это привилегированное действие.Ядро 32-битной ОС не может продолжать работать, если процессор переключен в 64-битный режим, поэтому вам следует переключиться обратно перед входом в ядро
2) Но ядро часто вызывается асинхронно для таймера (планировщик)) и другие аппаратные прерывания (драйверы).Он не сохранит 64-битные регистры и не изменит режим с длинного на защищенный.
Возможно, можно написать специальный драйвер, который будет выполнять 64-битные задачи на 32-битной ОС, но такой драйвербольше похоже на 64-битное ядро и динамический патчер ядра.Я не знаю ни одного такого решения.
Вы можете использовать только MMX, SSE, SSE2, SSE3, AVX для доступа к 64-битному ALU и регистрам вашего ЦП при работе в 32-битной ОС.
Я могу сказать, что Linux, некоторые BSD, Mac OS X имеют режим, когда используется 64-битное ядро, но программное обеспечение пользовательского пространства является 32-битным.В таком случае можно будет запускать как 32-разрядные, так и 64-разрядные приложения, поскольку ядро знает о 64-разрядном режиме и может обращаться к 64-разрядным регистрам для переключения задач.Насколько я знаю, MS Windows не имеет такого режима (W7 эмулирует 32-битный режим, но это называется мой MS в качестве симулятора, поэтому я предполагаю, что это не встроенная функция ядра).
Другая возможность (это лучше, если ваш процессор поддерживает аппаратную виртуализацию) - это использовать 64-разрядный гипервизор (VMware / Xen, другие решения с завышенной ценой) с 32-разрядными и 64-разрядными гостевыми ОС.VirtualBox - это еще один вариант использования гипервизора, который можно использовать бесплатно.