Почему 64-разрядная ОС не может работать на 32-разрядном процессоре, а 32-разрядная ОС работает на 64-разрядном процессоре?
6 ответов
Я предполагаю, что мы говорим о стандартных ПК здесь.
Большинство 64-разрядных процессоров, особенно Intel и AMD, имеют полный набор 32-разрядных команд, а также 64-разрядные расширения, поэтому они могут запускать 32-разрядное программное обеспечение.
32-битные процессоры не имеют 64-битных инструкций. Многие были созданы еще до того, как был определен 64-битный набор инструкций, поэтому невозможно, чтобы они могли правильно его реализовать, даже эмулировать. Они просто не понимают этот язык.
64-битные процессоры поддерживают любые слова длиной до 64 бит, поэтому теоретически на них будут работать любые 8, 16, 32 или 64-битные ОС. 32-разрядные процессоры не поддерживают длину 64-разрядных слов, поэтому на них может быть запущено только <= 32-разрядное программное обеспечение (включая 32-разрядные ОС).
Почему вы не можете запустить Windows на вашем старом Atari? Несовместимое оборудование и процессоры.
x86-64 следует считать полностью отличным от x86, потому что он сильно отличается от точки зрения ядра и машинного кода. Единственное, что у них действительно общего, - это код начальной загрузки (из 16-битного запуска, чтобы добраться до 64-битного, вы должны [обычно] сначала перейти на 32-битный), а также 32-битный режим совместимости и общие расширения CPU, такие как SSE. Помимо этого, процессоры действительно полностью отличаются от того, как приложения создаются в машинном коде.
Это потому, что процессор в случае 32-битной машины не может обрабатывать 64-битную обработку, но 64-битный процессор более чем способен обрабатывать 32-битные, поскольку он может работать с 64-битными одновременно.
64-битная ОС запрограммирована с учетом 64-битных регистров. 32-битный процессор имеет только 32-битные регистры.
Есть много других причин для этого, кроме просто регистров.
64-разрядная ОС опирается на возможности процессора 64-разрядного процессора.
Вы не можете указать 32-битному процессу выполнить операцию с 64-битным регистром, если он не существует.
В то время как 64-битные процессоры имеют все, что есть у 32-битных, так что это можно сделать.