# HG changeset patch # User Nobuyasu Oshiro # Date 1325594551 -32400 # Node ID a4d16779fd1e3fff7339bb47be4cdbb023ee80d6 # Parent 454ddda8d3068b48b802d8e949e05160933306ec modify explanation of GCC diff -r 454ddda8d306 -r a4d16779fd1e presen/index.html --- a/presen/index.html Tue Jan 03 21:13:11 2012 +0900 +++ b/presen/index.html Tue Jan 03 21:42:31 2012 +0900 @@ -239,6 +239,7 @@ +

GCC:Generic Tree

-
  • それぞれの命令はSTATEMENT_LISTでまとめて保持される。
  • +
  • CALL_EXPRE、MODIFY_EXPR等といった表現で扱われる。
  • @@ -287,10 +289,8 @@ -
    ソースコード -

    - -

    +
    +
    @@ -314,7 +314,9 @@
  • 末尾除去:Tail Call Elimination(TCE)
  • レジスタによる引数渡し(fastcall属性の付与)
  • 環境付き継続
  • +
    @@ -1030,6 +1032,44 @@
    +

    Micro-Cとの比較

    +
  • Micro-C,GCC-4.4とGCC-4.6のCbCコンパイラでコンパイルしたプログラムの実行の速度
  • + + + +
    + + + +
    +
  • GCC版の最適化無しの場合、引数を全て一時変数に代入するという処理が入る。 + その為に明らかに遅くなっていることが分かる。
  • +
  • だがGCCの最適化有りの場合はMicro-C版よりも早い。
  • +
    + +
    +

    まとめ

    + +
    + +
    +

    今後の予定

    + +
    + +

    CbCの機能の拡張:__rectype の実装

  • 通常、関数の引数に関数ポインタを渡した際は以下の様に使われる。
  • @@ -1081,44 +1121,6 @@
    -
    -

    Micro-Cとの比較

    -
  • Micro-C,GCC-4.4とGCC-4.6のCbCコンパイラでコンパイルしたプログラムの実行の速度
  • - - - -
    - - - -
    -
  • GCC版の最適化無しの場合、引数を全て一時変数に代入するという処理が入る。 - その為に明らかに遅くなっていることが分かる。
  • -
  • だがGCCの最適化有りの場合はMicro-C版よりも早い。
  • -
    - -
    -

    まとめ

    -
      -
    • 今回GCC版CbCコンパイラのアップデートを行った。
    • -
    • TCEにかかる判定の部分と環境付き継続の実装の修正を行った。 -
      おかげで、以前より楽な管理ができる実装にすることができた。
    • -
    • 後は環境付き継続の最適化の問題の修正とselftypeの実装を行う。
    • -
    • 全ての実装を終えたらGCC版CbCコンパイラの実装はアップデートを行なっていくだけとなる。
    • -
    -
    - -
    -

    今後の予定

    -
      -
    • CbCを用いたプログラムの作成
    • -
        -
      • CbCによるタスクマネージャの作成
      • -
      -
    • llvmへのCbCの実装
    • -
    -
    -