タグ

ghcとHaskellに関するmatatabityのブックマーク (2)

  • GHC と仲良くなろう

    GHC(Glasgow Haskell Compiler)と仲良くなろう 概要 GHCの生成するコードを理解しようという話 と、見せかけて、ただ単にこれを読んだ小学生の感想文なので、元の論文が読める人には必要無い Core言語とSTG言語 GHCは中では "元 -> Core言語 -> Stg言語 -> なんか -> なんか " という構造になっていることは、どっかで読んだことあるかと思う Core言語、STG言語は、それぞれ、言語になってて、Haskell言語はそれに変換されたあと、最適化されたりして、Cコードになる。 簡単に説明しておくと、Core言語が、型クラスとか、ややこしいCase式とかを取り除いたもの。STG言語が…(ただいま調査中あとで書く) Core言語 Core言語というのは、Haskell言語からややこしいSyntax Sugarを取り除いたものだと考えればよいと思う。

  • GHCのこと

    オブジェクトレイアウト 通常のHaskellの値(代数的データ型および関数)と、未評価の計算を表すサンクは、全てポインタで参照される。ポインタが指す先は通常はヒープ上のオブジェクトだが、静的セクションに置かれていることもある。いずれにしてもレイアウトは同じで、以下の一般形をとる。 オブジェクトの先頭1ワードは静的領域へのポインタ(infoポインタ)で、この値を評価(関数なら適用)するためのコード(entry code)と、このオブジェクトの種類に関する情報を集積したレコードを指している。なお、GHCにおける1ワードはポインタと同じ大きさ、つまり32ビットOSなら32ビット、64ビットOSなら64ビットである。これはIntの精度と同じでもある。 代数的データ型 代数的データ型の評価済みの値では、infoポインタが構築子の種類を表し、その後に構築子の引数を入れるスロットが続く。したがって、N引

  • 1