9

現在、私は大学で F# についてのレクチャーを行っています。F# インタラクティブ コンソールと F# コンパイラについて質問があります。

F# コンパイラは、F# ソースのコンパイル時に Microsoft Intermediate Language (MSIL) コードを生成します。これは、書かれたプログラムを実行するときに、JIT コンパイラによってマシン コードに変換されます。

しかし、F# インタープリター コンソールは何をするのでしょうか? また、F# コードを 1 行ずつ MSIL に変換し、それを JIT してマシン コードに変換しますか? それとも、F# コードを直接マシン コードに変換しますか?

最初にそれを IL に変換する場合、JIT コンパイラーは完全なプログラムしかコンパイルしないため、おそらく IL インタープリターが存在すると思います。そうじゃない?

F# インタープリターが F# コードをどのように処理し、それを変換するかについてどう思いますか?

こんにちは、マーティン

4

1 に答える 1

15

F# コンパイラは、独自のライブラリAbsILを使用して IL を発行します。AbsIL は、F# に吸収された別の MSR プロジェクトです。

インタラクティブ モード用にコンパイルする場合、AbsIL はSystem.Reflection.Emit名前空間を使用して、実行時にメモリ内の IL を出力します。IL は、コードの実行時に JIT によってネイティブ コードにコンパイルされます。

于 2011-01-06T10:47:39.637 に答える