2017-02-01 9 views
0

Windows APIを使ってプログラムをコーディングしてコンパイルするとしましょう。コードは、CPUが実行されるようにマシンコードにコンパイルされます。さて、私の質問は:私は他の人のための実行可能ファイルを自分のCPUに設定されている別の命令と共有する場合。 CPUが同じようにコードを実行し、エラーを出したり、別のコードを実行したりすることはできますか?私のCPU上のプログラムは、他のCPU上で同じように実行できますか?

答えて

1

そのCPU に設定された他の命令と他の誰か... はどのように自分のCPUは、コードが実行されません同じよう

コードを実行することができます。 CPUは、単純に言えば、別の言語を話す。

次の2つのオプション

  1. (あなたがSTDLIBとC/C++で左しているので、あなたは、同じソース言語となしプラットフォーム固有のAPIを使用することができると仮定して)ターゲットCPUのためのコードを再コンパイル

    を持っています
  2. スクリプト/バイトコードを書き、スクリプト(またはバイトコード)を解釈するために、両方のプラットフォームで利用可能なランタイムを使用

ランタイムである理由ですJVM(Javaの場合)やスクリプト(Python、Scala、Lua、JavaScriptなど)のような、コードがスクリプトの形式である場合やプラットフォームに依存しないコードの場合などです。

そして今すぐ次のステップ。 Windows APIを使用している場合は、名前のとおり、Windowsシステムによって提供されるAPI(サービス)です。したがって、Windowsシステムなしで同じCPUを使用する場合(Linuxシステムなど)でも、アプリケーションは実行されません。 (確かに、Linux上でWindows APIを公開する方法がありますが、時には面倒なこともあります)。

結論:バイナリはあなたが任意の高レベルAPI(Win32のを、...)を使用している場合、あなたはかなり夢中すぎ

0

ハイレベルのオペレーティングシステムにしている、命令セットの間でポータブルではありません言語は実行可能にコンパイルされ、しばしば中間コードにコンパイルされます。これはアセンブリ言語に近いところでコンパイルされたソースコードを表していますが、CPU命令セットに固有のものではありません。この中間コードを解釈してCPUのネイティブ命令セットで実行するのは、実行可能プログラムを実行しているマシンの責任です。

関連する問題