Window RT無法兼容 Windows 傳統軟體到底是因為 ARM 架構與 X86 架構的區別導致,還是微軟出於營銷考慮,故意不兼容的?
01-21
黑客已經可以運行部分傳統軟體了
http://www.pconline.com.cn/win8/softnews/1301/3141824.html
謝@右丑君邀請,Windows RT不能運行傳統的Windows程序,就是因為x86和ARM是不同的指令集,不是因為任何其他非技術的原因,不同的指令集本身就是技術的鴻溝。這篇文章的小編,水平太低,混淆概念。那篇文章(Wordpress,可能需要梯子)所說的是繞過Windows RT應用完整性檢查的方法,也就是可以運行沒有經過微軟簽名認證的程序,沒有說可以運行x86的應用。
CPU執行指令,使得程序能夠運行。但是CPU存在很多種不同的架構,我們有時也稱之為平台,這些不同的架構針對不同的應用需求而設計,所以他們的程序是不通用的。有一種使得程序通用的方法,就是構造一種虛擬機,把程序編譯為這種虛擬機的指令,然後把這個虛擬機在不同的CPU架構上實現一次,這樣子程序就可以在不同的平台上使用了。Java就屬於這一種類型的程序,可以在任何的平台上運行和使用。
不過微軟是有辦法讓Windows RT運行一部分傳統Windows的應用程序的,因為Windows系統都自帶了一個虛擬機,就是.NET CLR,而且這是一個做得很好的虛擬機。也就是使用.NET開發的應用程序,理論上是可以在Windows RT上運行的。不過不知道微軟有沒有這種打算,似乎沒有看到這方面的新聞。現在不能運行不代表以後不能運行。以後可以用類似「Rosetta」這樣的轉碼工具運行
我覺得:
完全調用Win32標準API的應用是微軟限制運行的,不是不能運行。(不包括API修改過的情況)
調用私有API或者彙編代碼或者圖形加速之類的應用是真的跑不起來。但是Windows不可能在每個程序執行之前掃描一遍它是否可以運行,所以就簽名技術一刀切了。兩方面都有考慮。性能和開發難度來說,原來x86的程序必須重新編譯才能在ARM上跑起來。
但微軟不想平板這麼無序,想加強控制,所以推出Metro以及Store,為了控制許可權同時保證盈利。
但這樣學蘋果的做法遲早要被迫終止的。雖說win8和win8rt,windows phone8使用了相同的內核,但軟體卻互不兼容。起原因究竟是什麼呢?說白了,windows本身架構的問題。樓主感興趣的話,或許可以了解一下ubuntu。ubuntu的軟體在各個架構上是都可以運行的。目前已經發布了幾個ubuntu4phone的鏡像,有空可以試試。
推薦閱讀:
※微軟雅黑和微軟正黑的 UI 版與普通版有何區別?
※Windows 8.1安裝在 SSD 上是否還需要手動優化系統?
※大家對 Windows 9 有什麼樣的期待?
※如何使Windows 8.1的微軟拼音輸入法輸出台灣的標準國字?