9

目前我正在为大学做关于 F# 的研究。我对 F# 交互式控制台和 F# 编译器有疑问。

F# 编译器在编译 F# 源代码时会生成 Microsoft 中间语言 (MSIL) 代码。然后,在执行编写的程序时,JIT 编译器会将其翻译成机器代码。

但是 F# 解释器控制台有什么作用?它是否还逐行将 F# 代码转换为 MSIL,然后将其 JIT 转换为机器代码?还是将 F#-Code 直接翻译成机器码?

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

你怎么看,F#-interpreter 如何处理 F# 代码并翻译它?

问候,马丁

4

1 回答 1

15

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

在为交互模式进行编译时,AbsIL使用System.Reflection.Emit命名空间在运行时在内存中发出 IL,而 JIT 在执行代码时又将其编译为本机代码。

于 2011-01-06T10:47:39.637 回答