Neden 32 bit işlemcide 64 bit işletim sistemi kullanamıyoruz?


2

Neden 64 bit işletim sistemi 32 bit işlemcide çalışamıyor, ancak 32 bit işletim sistemi 64 bit işlemcide çalışıyor?


9
Neden "B" tipi bir işlemci için "B" tipi bir işlemci üzerinde yazılım çalıştırmıyorsunuz? Çünkü A! = B.
John Saunders

1
basit cevap: Çünkü bu bir PITA. :)
Tony,

2
Tabii ki, tek yapmanız gereken 32 bit işlemciyi çıkarmak ve 64 bit işlemciyi koymak.
Hello71

Yanıtlar:


19

Burada standart PC'lerden bahsettiğimizi farz ediyorum.

64-bit işlemcilerin çoğu - özellikle Intel ve AMD'li olanlar - 64 bit uzantıların yanı sıra tam 32 bit komut setine sahiptir, böylece 32 bit yazılımı çalıştırabilirler.

32-bit işlemcilerde 64-bit bir talimat seti yoktur. 64-bit komut seti tanımlanmadan önce bile çoğu yapıldı, bu yüzden onu doğru uygulayabilmeleri, öykünebilmelerine bile izin vermeleri mümkün değildi. Sadece o dili anlamıyorlar.


Hepsi temel düzeydeki kayıtlara iniyor. 64 bit işlemciler bir seferde 64 bitlik öğeleri hareket ettirebilirler. 32 bit işlemcilerin 64 bit kaydı yok.
Fiasco Labs,

9

64 bit CPU'lar 64 bit'e kadar herhangi bir kelime uzunluğunu destekler, bu nedenle teoride 8, 16, 32 veya 64 bit işletim sistemi üzerinde çalışacaktır. 32 bit CPU'lar 64 bit kelime uzunluğunu desteklemez, bu nedenle üzerinde yalnızca <= 32 bit yazılım (32 bit işletim sistemi dahil) çalıştırılabilir.


+1: IMO, bu gruptaki tek 'doğru' cevap. :)
Ƭᴇcʜιᴇ007

1
Aslında, bu cevap en azından bir şekilde birkaç seviyede yanlıştır. Yanlış olmasının ana yolu şudur - tipik 32-bit CPU'lar 64-bit kelimelerle çalışır. Orijinal Pentium 4'ün 64-bit kelimelerle çalışan birçok talimatı vardı. Uzunluk kelimesiyle ve talimat setiyle ilgili yapabilecekleri çok az şey vardır.
David Schwartz

5

Neden eski Atari'nizde Windows çalıştıramıyorsunuz? Uyumsuz donanım ve işlemciler.

x86-64, x86'dan tamamen farklı olarak düşünülmelidir, çünkü çekirdek ve makine kodu açısından çok farklıdır. Gerçekten ortak olarak paylaştığı tek şey önyükleme kodu (16bit başlangıçtan itibaren 64bit'e ulaşmak için [genellikle] önce 32bit'e gitmelisin) ve 32 bitlik uyumluluk modu ve SSE gibi ortak CPU uzantıları. Bunun dışında, işlemciler uygulamaların makine kodunda nasıl yapıldığından tamamen farklıdır.


Burada davayı fazlasıyla abartıyorsun. Windows'taki kaynak kodunun en az% 99'u, çekirdek modu bileşenlerini hariç tutmamakla birlikte, x86, x64, ia64 ve ARM arasında aynıdır. Ve bir x64 programında bile, x64 mimarisi büyük ölçüde x86'nın bir üst kümesidir. örneğin, eğer EAX’i EBX’e kopyalamak istiyorsanız, bu hem x86 hem de x64’te MOV EBX EAX; bu talimatın makine kodlaması bile bu ikisi arasında aynıdır.
Jamie Hanrahan

@JamieHanrahan belki, PIC gibi şeyler, işaretçiler, vb. İçeren herhangi bir şey hariç ... x86 için bir program derleyemezsiniz ve x64 için "sadece çalışır" ikilidir, makine kodu benzer olsa bile, semantik vardır farklılıklar
Earlz

Aslında, evet, aynısını yapabilirsin. Bunu 64 bit Windows'ta 32 bit bir program çalıştırdığınızda yaparsınız.
Jamie Hanrahan

2

Bunun nedeni, 32 bitlik bir makine durumunda işlemcinin 64 bit işlemeyi gerçekleştirememesi, ancak 64 bit işlemcinin bir seferde 64 bit ile başa çıkabildiği gibi 32 bit işleme kapasitesinden daha fazla olmasıdır.


2

64bit işletim sistemi 64bit yazmaçlara göre programlanmıştır. Bir 32bit CPU sadece 32bit yazmaçlara sahiptir.

Sadece kayıtların yanı sıra bunun için birçok başka neden var.


2

64 bit işletim sistemi, 64 bit işlemcinin işlemci özelliklerine dayanır.

Eğer mevcut değilse, 32 bitlik bir işlemin 64 bitlik kayıt defterinde bir işlem gerçekleştirmesini söyleyemezsiniz.

64 bit işlemcilerde 32 bit olan her şeye sahip olduğu için yapılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.