Core 是 GHC 的中间语言。Reading Core 可以帮助您更好地了解程序的性能。有人向我询问有关阅读 Core 的文档或教程,但我找不到太多。
哪些文档可用于阅读 GHC Core?
GHC Core 是所有 Haskell 都被翻译成的System FC语言。Core 的(近似)语法由下式给出:
Core 与更简单、更广为人知的System F密切相关。GHC 在核心级别上所做的所有转换都是此核心表示的类型保留重构,以提高性能。而且,不太为人所知,您可以直接在 Core 中编写 GHC 程序。
GHC Core 适合编译器管道(就像 2002 年一样,sans-LLVM 和 CMM):
了解 GHC Core 的主要文件是:
GHC.Core.Expr
有助于理解的相关材料:
核心又被翻译成 STG 代码,看起来像:
Core 中有趣的名字是用“Z 编码”编码的:
GHC Core 的类型和种类(来自 Tolmach 的论文):
最后,当您将 Haskell 优化到 GHC 知道的基本指令时,GHC 的primops会定期出现在 GHC Core 输出中。primop 集作为预处理文件中的一组核心函数给出。