ネイティブ ソフトウェアの実行、エミュレーション、ソフトウェアの互換性について言及する場合、正確には何を指しているのでしょうか?ネイティブ ソフトウェアの概念を詳しく読み進めてください。
今日の質疑応答セッションは、コミュニティ主導の Q&A Web サイトのグループである Stack Exchange の一部門である SuperUser のご好意で提供されます。
質問
SuperUser 読者の Throsby は、ソフトウェアをネイティブに実行することが何を意味するのかに興味を持っています。彼は書く:
![]()
ソフトウェアがネイティブで実行されるとはどういう意味なのか、ずっと疑問に思っていました。このようなソフトウェアとは具体的に何ですか?ネイティブで動作しないソフトウェアとどう違うのでしょうか?特定のソフトウェアが自分のコンピュータ上でネイティブに実行されるかどうかを確認するにはどうすればよいですか?私のコンピュータ上にはネイティブで動作するソフトウェアがすでに存在する可能性がありますか?
特定のシステムでネイティブであることが何を意味するかを正確に説明する優れた例えを読んでください。
答え
SuperUser の寄稿者である Deltik は、ソフトウェアがネイティブであることが何を意味するのか、そして特定のシステム上でどのような他のソフトウェアが見つかるのかを強調する素晴らしい例えを提供しています。
ソフトウェアは、そのプラットフォーム上で実行するように設計されている場合、そのプラットフォームにネイティブです。
プラットフォームは通常、オペレーティング システムを指しますが、任天堂のゲームボーイなどのデバイスにも適用されます。
ゲームボーイを例に挙げると、ゲームボーイはカートリッジからソフトウェアを取得します。これらのカートリッジには、ゲームボーイ上で ネイティブに 実行されるコードが含まれています。
エミュレータは 、あるプラットフォーム用に設計されたソフトウェアを別のプラットフォームで実行できるようにする層です。たとえば、ゲームボーイ カートリッジのイメージを実行して、コンピュータや携帯電話でもゲームボーイ ゲームをプレイできるようにするエミュレータがあります。
互換性レイヤーは エミュレーターのようなものです。 64 ビットのコンピュータとオペレーティング システムが主流になったとき、それらは既存の 32 ビット テクノロジと互換性がある必要がありました。 64 ビットと 32 ビットのアーキテクチャは大きく異なるため、多くの場合、64 ビット マシンで 32 ビット ソフトウェアを実行するには互換性レイヤーが必要になります。 Microsoft Windows の 64 ビット版の場合、Microsoft は 32 ビット プログラムが新しい 64 ビット システムでも動作できるように互換性レイヤーを作成する必要がありました。一部のプログラムが というフォルダーにインストールされることが多いのはこのためです。
Program Files (x86)、 どこ
x86「32ビット」を意味します。
互換性レイヤーは、エミュレーターよりもネイティブ システムと密接な関係にある傾向があります。 VirtualBox は オペレーティング システム* のハードウェアをエミュレートします。エミュレートされるシステムはホスト システムと直接対話することはあまりありません。 WoW64 は 、より統合された方法で 32 ビット プログラムを 64 ビット Windows 上で実行できるようにする互換性レイヤーです。 WW64 は、プログラムを隔離された環境でエミュレートするのではなく、互換性を持たせるのに役立ちます。
翻訳ライブラリは 互換性レイヤーのコンポーネントです。バイナリ コードが非ネイティブで実行されている場合、変換ライブラリは外部の非ネイティブ呼び出しを、システムが理解できるネイティブ呼び出しにリダイレクトするのに役立ちます。オリジナルの TI-83 用に作成されたアセンブリ プログラムは、新しい TI-83/84 Plus 計算機と互換性がない可能性があります。これは、TI-83 のアーキテクチャで意味を成した一部の呼び出しが TI-83/84+ では無効になる可能性があるためです。変換ライブラリ (おそらく MirageOS などのシェルに含まれている) により、TI-83 の呼び出しが TI-83/84+ 計算機の新しい更新された場所に確実に送信されます。
プラットフォームに依存しないコードは、 通常はネイティブで実行されるものによって解釈される言語で記述されます。たとえば、PHP は、インストールされた PHP バイナリによって解釈および実行されるプログラミング言語です。PHP バイナリは、Windows、Mac、および Unix ベースのオペレーティング システム用にすでにネイティブにコンパイルされています。 Web スクリプト作成者が作成する PHP コードはプラットフォームに依存しないため、PHP が複数のオペレーティング システムにインストールされている限り、コードは複数のオペレーティング システム上で動作することができます。
説明に何か追加することはありますか?コメントでは音を消してください。他のテクノロジーに精通した Stack Exchange ユーザーからの回答をさらに読みたいですか? ここで完全なディスカッション スレッドを確認してください 。





