GHCコアを読む 質問する

GHCコアを読む 質問する

Core は GHC の中間言語です。Core を読むと、プログラムのパフォーマンスをよりよく理解するのに役立ちます。Core の読み方に関するドキュメントやチュートリアルを尋ねられたのですが、あまり見つけられませんでした。

GHC Core を読むために利用できるドキュメントは何ですか?

これまでに私が見つけたものは次のとおりです:

ベストアンサー1

GHCコアはシステムFCすべての Haskell が翻訳される言語。Core の (おおよその) 文法は次のようになります。

ここに画像の説明を入力してください

コアは、よりシンプルでよく知られているシステムF。 全てGHCがコアレベルで行う変換パフォーマンスを向上させるために、この Core 表現の型保持リファクタリングが行われます。また、あまり知られていませんが、GHC をプログラムするために Core で直接記述することもできます。

GHC コアはコンパイラ パイプラインに適合します (2002 年当時、LLVM と CMM はありませんでした)。

ここに画像の説明を入力してください

GHC Core について学ぶための主なドキュメントは次のとおりです。

理解を助ける関連資料:

  • GHC -fext-core 出力
  • 私はGHCのソースを読んでCoreを学ぶのに多くの時間を費やしました。学部論文2002年、16ページより。
  • 使用からghcコアツールは、私が満足する形式で Core を生成します。

コアは STG コードに変換され、次のようなものになります。

ここに画像の説明を入力してください

Core の面白い名前は「Z エンコーディング」でエンコードされています。

ここに画像の説明を入力してください

GHC Core の型と種類 (Tolmach の論文より):

ここに画像の説明を入力してください

最後に、GHCのプリモプスGHC Coreの出力には、HaskellをGHCが理解できる基本命令まで最適化すると、定期的に表示されます。primopセットは、コア関数のセットとして提供されます。前処理されたファイル。

おすすめ記事