F # Interpreter (fsi.exe) также создает промежуточный языковой код, как F # Compiler (fsc.exe)? - PullRequest
8 голосов
/ 06 января 2011

В настоящее время я делаю репертуар для университета о F #. У меня вопрос по поводу интерактивной консоли F # и компилятора F #.

Компилятор F # создает код Microsoft Intermediate Language (MSIL) при компиляции F # -источника. Затем этот код преобразуется JIT-компилятором в машинный код при выполнении написанной программы.

Но что делает Консоль интерпретатора F #? Это также переводит строку за строкой код F # в MSIL, а затем JIT - в машинный код? Или он переводит F # -код непосредственно в машинный код?

Если он сначала преобразует его в IL, то я думаю, что, вероятно, будет интерпретатор IL, потому что JIT-компилятор компилирует только полные программы. Не так ли?

Как вы думаете, как F # -интерпретатор обрабатывает код F # и переводит его?

Привет, Martin

1 Ответ

14 голосов
/ 06 января 2011

Компилятор F # выдает IL, используя свою собственную библиотеку AbsIL . AbsIL - это еще один проект MSR, который был поглощен F #.

При компиляции для интерактивного режима AbsIL использует пространство имен System.Reflection.Emit для передачи IL в память во время выполнения, которое в свою очередь компилируется в собственный код JIT, поскольку он выполняет код.

...