Perché non possiamo usare il SO a 64 bit su una CPU a 32 bit?


2

Perché un sistema operativo a 64 bit non può essere eseguito su una CPU a 32 bit, ma un sistema operativo a 32 bit funziona su una CPU a 64 bit?


9
Perché non è possibile eseguire il software per il tipo di CPU "A" su una CPU di tipo "B"? Perché A! = B.
John Saunders

1
risposta semplice: perché è un PITA. :)
Tony

2
Certo che puoi, tutto ciò che devi fare è rimuovere la CPU a 32-bit e inserire una CPU a 64-bit.
Hello71

Risposte:


19

Presumo che stiamo parlando di PC standard qui.

La maggior parte dei processori a 64 bit, in particolare quelli di Intel e AMD, hanno il set di istruzioni completo a 32 bit e le estensioni a 64 bit, in modo che possano eseguire software a 32 bit.

Tuttavia, i processori a 32 bit non hanno un set di istruzioni a 64 bit. Molti sono stati creati anche prima che il set di istruzioni a 64 bit fosse definito, quindi non è possibile che lo implementassero correttamente, anche emulando. Semplicemente non capiscono quella lingua.


Tutto a livello base scende ai registri. I processori a 64 bit possono spostare roba a 64 bit alla volta. I processori a 32 bit non hanno registri a 64 bit.
Fiasco Labs

9

Le CPU a 64 bit supportano qualsiasi lunghezza di word fino a 64 bit, quindi in teoria, su esse verranno eseguiti sistemi operativi a 8, 16, 32 o 64 bit. Le CPU a 32 bit non supportano la lunghezza della parola a 64 bit, quindi è possibile eseguire solo il software & lt; = 32 bit (inclusi i sistemi operativi a 32 bit).


+1: IMO, l'unica risposta "giusta" in questo gruppo. :)
Ƭᴇcʜιᴇ007

1
In realtà, questa risposta è almeno in qualche modo sbagliata a diversi livelli. Il modo principale in cui è sbagliato è questo: le tipiche CPU a 32 bit operano su parole a 64 bit. Il Pentium 4 originale aveva un sacco di istruzioni che funzionano con parole a 64 bit. Ha poco a che fare con la lunghezza della parola e tutto ciò che ha a che fare con il set di istruzioni.
David Schwartz

5

Perché non riesci a eseguire Windows sul tuo vecchio Atari? Hardware e processori incompatibili.

x86-64 dovrebbe essere considerato completamente diverso da x86 perché è molto diverso dal punto di vista del kernel e del codice macchina. L'unica cosa che condividono veramente è il codice di bootstrap (dall'avvio a 16 bit, per arrivare a 64 bit devi [di solito] andare prima a 32 bit) e la modalità di compatibilità a 32 bit e le estensioni della CPU comuni come SSE. Oltre a questo, i processori sono completamente diversi da come vengono fatte le applicazioni in codice macchina.


Stai ampiamente esagerando nel caso qui. Almeno il 99% del codice sorgente in Windows, ad eccezione dei componenti in modalità kernel, è lo stesso tra x86, x64, ia64 e ARM. E anche in un programma x64, l'architettura x64 è in gran parte un superset di x86. per esempio. se vuoi copiare EAX su EBX, è MOV EBX EAX sia in x86 che in x64; anche il codice macchina di quella istruzione è lo stesso tra questi due.
Jamie Hanrahan

@JamieHanrahan forse, ad eccezione di cose come il PIC, tutto ciò che riguarda i puntatori, ecc. Ecc. Non è possibile compilare un programma per x86 ed è binario "basta lavorare" per x64, anche se il codice macchina è simile, ci sono semantici differenze
Earlz

In realtà, sì, puoi fare esattamente questo. Lo fai ogni volta che esegui un programma a 32 bit su Windows a 64 bit.
Jamie Hanrahan

2

È perché il processore nel caso di una macchina a 32 bit non può gestire l'elaborazione a 64 bit, ma un processore a 64 bit è più che in grado di gestire 32 bit in quanto può gestire 64 bit alla volta.


2

Un sistema operativo a 64 bit è programmato con i registri a 64 bit in mente. Una CPU a 32 bit ha solo registri a 32 bit.

Ci sono molte altre ragioni per questo, oltre ai soli registri.


2

Un sistema operativo a 64 bit si basa sulle caratteristiche del processore di un processore a 64 bit.

Non è possibile indicare a un processo a 32 bit di eseguire un'operazione sul registro a 64 bit se non esiste.

Mentre i processori a 64 bit hanno tutto ciò che il 32 bit ha, quindi può essere fatto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.