請問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 么?