2

非常に多くの JIT 実装が存在するため、すべての JIT がネイティブ コードを発行します。では、ネイティブ コードをネイティブ実行可能ファイルに保存するための JIT2EXE のようなツールを作成しなかったのはなぜでしょうか。

4

4 に答える 4

5

あなたが話している言語を明確に指定していないため、質問は漠然としています.NETの私の領域では、.NET実行可能ファイルは、読み込み時間を短縮するために実行時にpre-jitされています。このコードは、NGEN と呼ばれるプロセスによってネイティブ コードに生成できます。NGEN は、.NET IL コードを取得し、プロセッサが理解できるバイナリのプロセスでそれを変換します。通常、NGEN コードは 'C:\Windows\Assembly\NativeImages_ {version} '内のフォルダーに格納されます。ここで、バージョンは .NET Framework のバージョンを表します。NGEN とそれを使用できる場所と使用するタイミングについては、Jeffrey Richter による CodeGuruを参照してください。ネイティブバイナリコードとの統計/比較に関するこの記事については、Codeprojectのこちらをご覧ください。ここでもダニエル・ピステリによるものです。

于 2010-02-27T12:19:18.440 に答える
3

ngenのようなものですか?

于 2010-02-27T11:57:27.010 に答える
1

実際のところ、多くの Java (または他のインタープリター言語) からネイティブへのコンパイラーがあります。gcjについて聞いたことがありますか?

http://gcc.gnu.org/java/

一部の重要な部分をネイティブ コードにコンパイルし、残りをバイトコードとして保持してスペースを節約する混合コンパイラもあります。Harissa は 10 年以上前にこれを行いました。

http://www.usenix.org/publications/library/proceedings/coots97/full_papers/muller/muller_html/usenix.html

Java コードは最初に C コードにコンパイルされ、その後、最適化を利用するために通常の C コンパイラに渡されます。このようなコードは、非常に高速になる可能性があります。

もちろん、このような事前コンパイル (ジャストインタイム コンパイルとは対照的に) は、バイトコード形式のいくつかの利点 (特に移植性と低メモリ フットプリント) を無効にするため、実際のアプリケーションはかなりまれです。

于 2010-02-27T12:00:41.163 に答える
1

質問で述べていること (「誰も JIT2EXE のようなツールを作成していません」) は、まったく真実ではありません。

http://en.wikipedia.org/wiki/AOT_compiler

于 2011-02-16T07:38:29.630 に答える