目前我正在为大学做一个关于F#的培训。我对F#interactive Console和F#编译器有疑问。
F#编译器在编译F#-source时生成Microsoft中间语言(MSIL)代码。在执行编写的程序时,JIT编译器将其转换为机器代码。
但F#Interpreter Console有什么作用?它是否也按行每行将F#代码转换为MSIL,然后将其转换为机器代码?或者它是否将F#-Code直接转换为机器代码?
如果它首先将它转换为IL,那么我认为可能会有一个IL解释器,因为JIT编译器只编译完整的程序。不是吗?
您如何看待F#-interpreter如何处理F#代码并对其进行翻译?
问候, 马丁
答案 0 :(得分:14)
F#编译器使用自己的库AbsIL发出IL。 AbsIL是另一个由F#吸收的MSR项目。
在编译交互模式时,AbsIL uses System.Reflection.Emit命名空间在运行时在内存中发出IL,然后在执行代码时由JIT编译为本机代码。