ARM版Windowsではなぜ既存のアプリケーションが動かないのか|企業クライアント戦略|ブログ|Computerworld(情報元のブックマーク数)

当然ARMバイナリでないと動かないよね。

今回からARMプロセッサ版のWindowsが登場する。ARMは、携帯情報機器などに使われるCPUで、システムを小型化できることと低消費電力が特徴である。ただし、ARM版では従来のWindowsアプリケーションは動作しない。ARM版にはMicrosoft Officeがバンドルされる他、リモートデスクトップクライアントが含まれるため、多くの状況では問題ないと思われるが、大きな制約になることは確かだ。
なぜARM版で従来のアプリケーションが動作しないのか。それはWindowsアーキテクチャ上の制約である。
現在のWindowsの原型は1993年発売のWindows NTである。当時、インテルのCPUは性能上の限界がきたとされ、MIPSPowerPC、そしてDEC Alpha(現在のHP)といったRISCプロセッサが注目されていた(Alphaは64ビット、他は32ビットプロセッサ)。
Windows NTは、これらのRISCプロセッサの性能を100%引き出すため、原則としてネイティブコードアプリケーションのみをサポートした。つまり、x86(当時はi386やi486)用のアプリケーションは、Alpha版Windowsでは動作しない。
例外は16 bit DOS/Windowsアプリケーションで、これはエミュレーションモードで実行された。x86の場合CPUが持つ「仮想8086モード」によるハードウェアエミュレーションが利用され、その他CPUではソフトウェアエミュレーションが使用された。
ソフトウェアエミュレーションは低速だが、Windowsシステムコールは「サンク(thunk)」と呼ばれる変換層の働きで、ネイティブコードで実行されるため、実際にはそれほど大きな速度低下はなかった。

http://www.computerworld.jp/blogs/d/202213/ARM%E7%89%88Windows%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%9C%E6%97%A2%E5%AD%98%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B

screenshot