F#Interpreter(fsi.exe)是否也生成中间语言代码作为F#编译器(fsc.exe)吗?

时间:2011-01-06 10:26:47

标签: .net f# interpreter intermediate-language

目前我正在为大学做一个关于F#的培训。我对F#interactive Console和F#编译器有疑问。

F#编译器在编译F#-source时生成Microsoft中间语言(MSIL)代码。在执行编写的程序时,JIT编译器将其转换为机器代码。

但F#Interpreter Console有什么作用?它是否也按行每行将F#代码转换为MSIL,然后将其转换为机器代码?或者它是否将F#-Code直接转换为机器代码?

如果它首先将它转换为IL,那么我认为可能会有一个IL解释器,因为JIT编译器只编译完整的程序。不是吗?

您如何看待F#-interpreter如何处理F#代码并对其进行翻译?

问候, 马丁

1 个答案:

答案 0 :(得分:14)

F#编译器使用自己的库AbsIL发出IL。 AbsIL是另一个由F#吸收的MSR项目。

在编译交互模式时,AbsIL uses System.Reflection.Emit命名空间在运行时在内存中发出IL,然后在执行代码时由JIT编译为本机代码。