# HG changeset patch # User Kaito Tokumori # Date 1414410504 -32400 # Node ID 8b891cb700d2e6385445a16d1030ff0d7f8938b4 # Parent a27fa581cc30b1ac925d7a8c13bea284ce90d8fa 20141028 diff -r a27fa581cc30 -r 8b891cb700d2 s6/2014_10_27.html --- a/s6/2014_10_27.html Mon Oct 27 20:47:31 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ - - - - - 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に合わせて書いて解決。 -
-
- -
- - diff -r a27fa581cc30 -r 8b891cb700d2 s6/2014_10_28.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/s6/2014_10_28.html Mon Oct 27 20:48:24 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に合わせて書いて解決。 +
+
+ +
+ +