請問intel的x86處理器的向下兼容究竟是指什麼?


向下兼容是指彙編指令一級的兼容性,這裡指的彙編指令,不是那種助記符(JMP之類的),而是真正的二進位代碼。

比如在8086時代(20年?30年前?),intel的跳轉指令:

JMP +90

翻譯成二進位代碼是

0xEB 0x90 (11101011 10010000)

這條指令在後來的80286、80386、後來的奔騰、酷睿、到如今的i3、i5、i7里,指令的含義都是一致的,編碼也是一致的。並且所有的Intel 8086、x86、x64架構的CPU都有一種模式能運行這條指令。

這就是兼容性。

但別的架構就沒這麼友好,世界上絕大多數其它架構的指令集(MIPS/PPC/ARM/SPARC/Cold Fire)都多多少少有點兼容性的問題,要麼是有些指令編碼改變了,有些指令行為改變了,這就導致了無法向下兼容。

實際上只要設計合理,操作系統合適的情況下,我們今天仍然能運行20年前的x86指令,但在別的指令集上要做到完全兼容,還是一件困難的事情。

--------------------------------------------------

這麼做的好處就是:操作系統不需要做太多改動就可以運行舊代碼。

在Java沒有流行起來之前,代碼要跨平台運行必須重新編譯,這對於用戶來說是非常麻煩的事情。

我們現在可以在Win7上運行XP時代,甚至是Win98時代的程序,這也得益於硬體指令的兼容,回頭看看MacOS,早年MacOS運行在PPC架構上,跟x86就是不同的指令集,那時候的MacOS里的程序要直接拿過來,根本無法使用,這就是兼容性的問題。

兼容性幫助的計算機在民用市場的大規模普及(普通用戶想學習編譯代碼實在是太困難了),在這一點上必須要感謝Wintel聯盟的貢獻。


就是一些也不知道誰規定的東西,有更簡單的做法,它卻非要那樣做。

比如把某段代碼挪來挪去


推薦閱讀:

裝電腦的時候,大力出奇蹟是一種什麼樣的體驗?
如何評價英特爾5月30號發布的酷睿i9?
為什麼自從Intel發明超線程HT技術後,並不是每款新出的CPU都有這功能?
怎樣理解Altera被intel收購??
對HPC領域來說,Intel Xeon Phi 真能幹掉GPU 么?

TAG:英特爾Intel | 中央處理器CPU |