Windows 11のARM64ECによって
DLLの一部がx64コードのままでよくなった
こうした問題に対して、Microsoftは、Windows 11でARM64EC(Emulation Compatible)というABIを追加定義した。ARM版Windows 11用のアプリケーションは、このARM64ECを使って開発することが可能になり、このときDLLの一部をx64コードのままにして、バイナリ変換で実行させることが可能になる。
ARM版Windows 10で定義されたARM64 ABIでアプリケーションを開発すると、DLL呼び出しもARM64 ABIに従う必要があり、ARM64用として開発する必要があった。しかし、x64のアセンブラで記述されたコードが含まれるような場合、プログラムをAArch64/A64命令セットに書き換える必要があり、単純な再コンパイルでは対応できなかった。
これまで、こうしたアセンブラ記述が問題で、ARM64版を開発できないアプリケーションがあったとしたら、ARM64ECを使うことでアセンブラ部分を書き換えることなく、ARM版Windows 11で動作可能になる。なお、ARM64ECでアプリケーションを開発するからといっても、必ずしもx86/x64コードを含む必要はない。
このARM64EC ABIは、簡単に言えば、x64 ABIと同じになるように再定義されたAArch64/A64命令セット用のABIだ。つまり、Calling Conventionやアライメント、スタックの構造はx64と同じになり、スタブが不要になる。ただし、そのためには、プログラムはARM64EC ABIに対応したコンパイラで作成する必要がある(Visual Studioが対応)。
Windows 11は、このARM64ECで作られているのか、とも思ったが、どうもそうではないようだ。タスクマネージャーの詳細タブでは、プログラムのアーキテクチャを表示できる。
ARM版Windows 11でタスクマネージャーを起動するとさまざまなコードタイプのプログラムが動いていることがわかる。ここで「ARM64(x64互換)」となっているのがARM64ECで作られたプログラムだと思われる。よく見るとMicrosoft.Photos.exeが「ARM」になっている
ここに「ARM64」と「ARM64(x64互換)」の2つが表示される。おそらく「ARM64(x64互換)」と表示されるのがARM64ECで作られたプログラムだと考えられる。しかし、Windows関連のプロセスはほとんどがARM64で、「ARM64(x64互換)」のプロセスは1つしかなかった。また、Windows PowerShellは、ARM64ECのようである。
Powershellからは、ユーザーが開発したものを含め、x64のDLLを呼び出すことができる。Powershell用として提供されているモジュール(PowerShellにはパッケージマネージャーやリポジトリがあり、そこからモジュールをダウンロードして組み込める)の中には、ARM64対応されていないものもありそうだ。
最初からARM64ECを採用して、ABIをx64互換としておいてくれたなら、フックやシェル拡張のモジュールもバイナリコンパイルしたものが利用できたのにと思うが、MicrosoftもWindows 10をARM対応させ、ARM64 ABIを定義するときに検討くらいはおそらくしただろう。しかし、採用しなかったのは、オーバーヘッドなどのなんらかの理由があったと考えられる。
ARM版Windowsにおける日本国内での最大の関心事は、ATOKが使えるようになるかどうかだろう。とはいえ、世界を見渡してもサードパーティ製のIMEが使われている言語は少ない。主にATOKのためだけにARM版Windowsを改良するとは思えないので、ありえるとしたら、MicrosoftがARM64/ARM64EC対応を支援するぐらいしかないだろう。とはいえ、国内でも入手できる機種は限られていて、市場が小さすぎる。ジャストシステム側にATOKをARM64対応させる気があるかどうかが一番のポイントとなりそうだ。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ











