小编典典

阅读 GHC 核心

all

Core 是 GHC 的中间语言。Reading Core 可以帮助您更好地了解程序的性能。有人向我询问有关阅读 Core 的文档或教程,但我找不到太多。

哪些文档可用于阅读 GHC Core?


阅读 55

收藏
2022-07-01

共1个答案

小编典典

GHC Core 是所有 Haskell 都被翻译成的System
FC语言。
Core
的(近似)语法由下式给出:

在此处输入图像描述

Core 与更简单、更广为人知的System F密切相关。GHC
在核心级别上所做的
所有转换都是此核心表示的类型保留重构,以提高性能。而且,不太为人所知,您可以直接在 Core 中编写 GHC 程序。

GHC Core 适合编译器管道(就像 2002 年一样,sans-LLVM 和 CMM):

在此处输入图像描述

了解 GHC Core 的主要文件是:

有助于理解的相关材料:

  • GHC -fext -core 输出
  • 我花了很多时间通过阅读 GHC 源码来学习 Core。有些在我2002 年的本科论文中有所描述,从第 16 页开始。
  • 从使用ghc-core工具,到生成我喜欢的格式的 Core。

核心又被翻译成 STG 代码,看起来像:

在此处输入图像描述

Core 中有趣的名字是用“Z 编码”编码的:

在此处输入图像描述

GHC Core 的类型和种类(来自 Tolmach 的论文):

在此处输入图像描述

最后,当您将 Haskell 优化到 GHC 知道的基本指令时,GHC 的primops会定期出现在 GHC Core
输出中。
primop
集作为预处理文件
中的一组核心函数给出。

2022-07-01