# HG changeset patch # User Kaito Tokumori # Date 1414410451 -32400 # Node ID a27fa581cc30b1ac925d7a8c13bea284ce90d8fa # Parent ab2d529bb1d720116915f5e4d46bf802a459a455 20141014 diff -r ab2d529bb1d7 -r a27fa581cc30 s6/2014_10_27.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/s6/2014_10_27.html Mon Oct 27 20:47:31 2014 +0900 @@ -0,0 +1,141 @@ + + + + + Presen + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + +
+ + + + + + + +
+

CbCにおけるデータセグメントの設計

+
+ Kaito Tokumori + +
+
+
+ +
+

研究目的

+

当研究室ではプログラムをコードセグメント、データセグメントという単位を用いて書くという手法を提案している。その手法を用いてプログラミングを行う言語として"CbC"の開発を行っており、これはCの下位の言語である。

+

CbCにおいてコードセグメントは処理の単位に相当し、データセグメントはその対象となるデータの単位となる。

+

データセグメントは C の構造体のように複数のデータ型の値を持つことができ、後から拡張することが可能である。また、構造を示すシグネチャを持ち、それを参照することで異なるバージョンのプログラム間でも正しく動作することが可能になる。

+
+ +
+

今週やったこと

+
    +
  • CbC_exampleの整理 +
      +
    • Makefileの作成 +
    • waring減らし +
    +
  • バグ修正 +
      +
    • void型関数内で環境付き継続を使用した時死ぬバグの修正。 +
    • 一部のコードセグメントが正しくTCEされないバグの修正。 +
    +
+
+ +
+

CbC_exampleの整理

+
    +
  • Makefileを作りました。 +
  • ディレクトリにまとめられていないものだけ。 +
  • nested functionのテスト等gccのための例題は除いてる。 +
  • warningを削減(全部は消えてない)。 +
+
+ +
+

バグ修正:void型関数内で環境付き継続を使用した時死ぬバグ

+
    +
  • CbC on LLVMでは環境付き継続の際に元関数と同じ型の変数を作るためvoid型だと使えない。 +
  • 型のチェックを__return解析時しか行っていなくて__environment解析時に死んでしまっていた。 +
  • __environment解析時にもチェックを入れて解決。 +
+
+ +
+

バグ修正:一部のコードセグメントが正しくTCEされないバグ

+
    +
  • LLVM 3.5 → LLVM 3.6時にTCEパスに更新があり、その部分を正しく統合出来ていなかった。 +
      +
    • tailフラグを付ける部分を一部落としてしまっていたのが原因。 +
    +
  • tailフラグを付ける処理をLLVM 3.6に合わせて書いて解決。 +
+
+ +
+ +