Core は GHC の中間言語です。Core を読むと、プログラムのパフォーマンスをよりよく理解するのに役立ちます。Core の読み方に関するドキュメントやチュートリアルを尋ねられたのですが、あまり見つけられませんでした。
GHC Core を読むために利用できるドキュメントは何ですか?
これまでに私が見つけたものは次のとおりです:
ベストアンサー1
GHCコアはシステムFCすべての Haskell が翻訳される言語。Core の (おおよその) 文法は次のようになります。
コアは、よりシンプルでよく知られているシステムF。 全てGHCがコアレベルで行う変換パフォーマンスを向上させるために、この Core 表現の型保持リファクタリングが行われます。また、あまり知られていませんが、GHC をプログラムするために Core で直接記述することもできます。
GHC コアはコンパイラ パイプラインに適合します (2002 年当時、LLVM と CMM はありませんでした)。
GHC Core について学ぶための主なドキュメントは次のとおりです。
- GHCコア言語の外部表現、トルマック、2001
GHC.Core.Expr
GHCの定義自体- Glasgow Haskell コンパイラ インライナーの秘密、ペイトン・ジョーンズとマーロウ、1999年。コアについては、出現分析注釈の詳細を含め、セクション2.3で説明します。
- Haskell の変換ベースの最適化ツール、ペイトン・ジョーンズとサントス、1998年。Core については、S3 で説明されており、ポリモーフィズムと Core の操作上の読み取りに関する説明も含まれています。
理解を助ける関連資料:
- のGHC -fext-core 出力
- 私はGHCのソースを読んでCoreを学ぶのに多くの時間を費やしました。学部論文2002年、16ページより。
- 使用からghcコアツールは、私が満足する形式で Core を生成します。
コアは STG コードに変換され、次のようなものになります。
Core の面白い名前は「Z エンコーディング」でエンコードされています。
GHC Core の型と種類 (Tolmach の論文より):
最後に、GHCのプリモプスGHC Coreの出力には、HaskellをGHCが理解できる基本命令まで最適化すると、定期的に表示されます。primopセットは、コア関数のセットとして提供されます。前処理されたファイル。