Возможно, что человек, который ответил на ваш оригинальный комментарий, столкнулся с 64-битной ОС (вероятно, подразумевающей ту, которая использует либо память, превышающую адресуемую вне 32-битного защищенного режима, либо использует 64-битные регистры), которая устанавливает и загружает процессоры ограничен 32-битной памятью или использует более широкие аппаратные регистры. В последнем разделе приведен реальный пример установки 64-битной ОС на 32-битное оборудование. В промежуточных разделах объясняется, почему такую ОС можно не только установить, но и использовать (теоретически).
Технические детали
Есть две основные вещи, которые можно ожидать в 64-битной ОС. Первая - это адресация памяти за пределами 4 ГБ. Поскольку основанные на BIOS 64-разрядные машины загружаются в 16-разрядном режиме (реальный AKA), можно написать операционную систему, которая переходит в режим длинной 64-разрядной памяти для определенных операций (см., Например, https://). www.codeproject.com/articles/45788/the-real-protected-long-mode-assembly-tutorial-, чтобы узнать, как выйти из 64-битного режима). Или, в однозадачной среде, перейдите в длинный режим для определенных программ. Для 32-разрядных программ DOS было обычным входить и выходить из 32-разрядного режима через расширитель DOS для запуска. Научно-вычислительная платформа может также сделать нечто подобное, чтобы получить преимущества в производительности от запуска 32-битного кода (да! 32-битный код может быть быстрее, чем 64-битный код!) кроме случаев, когда это необходимо.
Второе, что можно ожидать в 64-битной ОС, - это 64-битные регистры. Но можно легко оставаться в режиме низкого бита и при необходимости переключаться в режим более высокого бита. Можно иметь одну программу, которая содержит смесь 16-, 32- и 64-битных регистров. Для переключения размеров регистров используется префикс переопределения размера операнда (префиксы кода операции 0x66 и 0x67), хотя об этой последней детали обычно заботится компилятор, и она невидима для большинства программистов.
Теоретический пример
Можно написать операционную систему, которая использует только 64-битные в некоторых частях ОС. Такая ОС легко находится в сфере воображения. 32-разрядная ОС, портируемая на 64-разрядные, может начинаться с того, что только некоторые части ОС будут сделаны 64-разрядными (что делает ее 64-разрядной ОС). Предположим, аудиодрайвер первым портирован; такая ОС может нормально работать, пока не будет воспроизведен аудиофайл. Я предполагаю, что это происходит на сцене любителей ОС с некоторой регулярностью, поскольку кто-то хочет немного поэкспериментировать с 64-битными версиями или хочет повысить скорость выполнения определенного набора операций в ОС.
Реальный пример установки 64-битной ОС на 32-битную машину
Реальным примером сочетания 64-битного и 32-битного кода является MacOS (версии ~ 10.5-10.7). На 64-разрядном процессоре Intel Mac эти версии MacOS могут загружаться с ядром в 32-разрядном режиме и запускать 64-разрядные приложения с кодом 64-разрядной операционной системы. На 32-разрядной машине компьютер все еще загружается. Однако вместо сбоя компьютера при попытке запустить только 64-битные приложения MacOS просто отказывается запускать приложение.
Обратите внимание, что на 32-разрядных и 64-разрядных компьютерах Mac установлена одна и та же дисковая ОС. Вы можете установить MacOS на 32-битный Mac, вынуть диск и поместить его в 64-битный Mac и загрузить 64-битное ядро. И, конечно же, сцена Hackintosh доказывает, что вы можете установить MacOS на обычную 32-битную машину.