微軟基於arm的WinRt系統,底層API是什麼?

我們知道x86架構上的Windows底層是win32,那麼基於ARM的WinRt底層API是什麼呢?

ps:我不認為WinRt的.net framework是底層API,畢竟只是一個虛擬機


完整的Win32(針對Windows RT而言)

大部分完整的Win32,去除ANSI和GDI支持(針對Windows Phone而言)


圖片引自:How to call WinRT APIs in Windows 8 from C# Desktop Applications

總結起來就是,在針對ARM適配的Windows RT系統中,底層並沒有使用.Net Framework,而是和x86架構的Windows一樣,只是在Kernel層面對ARM指令進行了支持。在Kernel之上的不管是Windows APIs、Windows Runtime APIs還是.Net Framework,除了少部分實現可能需要做針對ARM指令的特殊處理,其它該是什麼樣就是什麼樣。至於更頂層的一般應用,在大部分時候甚至感知不到底層到底用了x86還是ARM架構的晶元。

在Windows中,基於ARM的Windows底層也是使用的Windows NT Kernel,只不過在一些硬體抽象層面以及驅動上編譯成針對ARM平台的指令。

在Windows NT Kernel之上有一層完整的Win32 APIs,Win32 APIs關注的都是系統層面的介面,因此你不需要過多地關心Win32 API背後它是使用x86架構執行還是ARM架構執行。

在Windows 8中添加的Windows Runtime APIs是在Win32 APIs之上的一層實現(如果要細分的話中間應該還有一層COM APIs)。在Windows 8中,Windows Runtime APIs就已經非常龐大,但是其中相當一部分都是只定義了方法卻沒有實現(之前在聽一名台灣的TechED講師介紹的時候說是時間來不及所以在實現上做了取捨。由此可見巨硬這種不讓程序員加班的公司是多麼腐朽落沒,必將被我大天朝BAT取代),不過在Windows 8.1中已經好了非常多。

在Windows Phone 8.0中,底層同Windows一樣,都是在最底層的Kernel部分對ARM進行了改寫和優化。在Kernel之上的Win32 APIs中,同Windows平台應該沒有太大區別,@imbushuo 提到有部分的介面被移除了。這個我沒有確認過,不過可能性應該還是比較高的,畢竟手機的性能和存儲擺在那裡,一些必要的刪減是必須的。

Windows Phone 8.0中Windows Phone Silverlight框架是一個簡化的.Net Framework實現,在底層實現上同一般版本的.Net Framework一樣,都是依賴Win32 APIs。在Windows Phone 8.1中,Universal App框架的引入實際上是微軟將Windows 8中的Windows Runtime APIs遷移到了Windows Phone中,以期能夠實現統一的開發環境,而這部分的框架同Windows一樣,建立在Win32 APIs之上的。

以上。


首先非常嚴肅的說明一下:

WinRT == Windows Runtime

WinRT != Windows RT OS

很多國內的媒體濫用縮寫。

從題目上看題主問的應該不是WinRT。


推薦閱讀:

如何評價微軟 Office 全能競技賽?
(2011年末)微軟會試圖挽救 IE 嗎?有哪些措施?
遊戲的進步有多緩慢?
為什麼Microsoft Powerpoint現在的版本去掉了錄製宏的功能?

TAG:微軟Microsoft | MicrosoftWindows | NET | Win32API | WinRT |