# HG changeset patch # User Kaito Tokumori # Date 1418094872 -32400 # Node ID 4ebf515b51da7de83e70d1de23a5c76d55c3b22d # Parent 71f4897e70eb3fa917f6da66a66281cc039d87df add diff -r 71f4897e70eb -r 4ebf515b51da s6/2014_12_02.html --- a/s6/2014_12_02.html Tue Dec 02 03:36:17 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ - - - - - Presen - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
- - - -
- - - - - - - -
-

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

-
- Kaito Tokumori - -
-
-
- -
-

研究目的

-

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

-

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

-

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

-
- -
-

今週やったこと

-
    -
  • data segmnet の実装について考える -
-
- -
-

data segmentの宣言, アクセス

-
-int main() {
-  __data ds; // declaration
-  goto code1(ds);
-}
-
-// deta segment definition should be generated automatically.
-__code code1(input inds, output outds){
-        :
-  inds.intdata = 1; // access
-  inds.string = "data segment";
-        :
-}
-        
-
    -
  • 宣言したいときは型として __data を使う。 -
  • data segmentの定義は自動的に生成する。 -
      -
    • __data を目印に、そこからアクセスされている値の型を推定する。 -
    • __data 用に型を用意しておいてLLVM IRにコンパイルするときに型を決めてあげればいける? -
    -
  • accessの仕方は構造体に倣う。 -
-
- -
-

data segmentの実装

-
    -
  • message pack -
  • localではmessage packの一つ手前の状態にしておきたい。 -
      -
    • javaのライブラリがもってるValueクラスのような。 -
    • c用のmessage packライブラリでは値を渡されたらすぐにバイト列に変換される。 -
    -
  • message packのフォーマットでは各要素の先頭に型情報を持っているから位置と名前を持っておけば特定のデータだけデシリアライズできる。型の照合もこれでできるはず。 -
      -
    • meta data segmentとして持つことになるはず。 -
    • 型、位置、名前の三つを持たせてこれだけ見て照合できるようにするほうが良い? -
    • message packのtype format -
    -
-
- -
- - diff -r 71f4897e70eb -r 4ebf515b51da s6/2014_12_11.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/s6/2014_12_11.html Tue Dec 09 12:14:32 2014 +0900 @@ -0,0 +1,147 @@ + + + + + Presen + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + +
+ + + + + + + +
+

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

+
+ Kaito Tokumori + +
+
+
+ +
+

研究目的

+

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

+

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

+

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

+
+ +
+

今週やったこと

+
    +
  • data segmnet の実装について考える +
+
+ +
+

data segmentの宣言, アクセス

+
+int main() {
+  __data ds; // declaration
+  goto code1(ds);
+}
+
+// deta segment definition should be generated automatically.
+__code code1(input inds, output outds){
+        :
+  inds.intdata = 1; // access
+  inds.string = "data segment";
+        :
+}
+        
+
    +
  • 宣言したいときは型として __data を使う。 +
  • data segmentの定義は自動的に生成する。 +
      +
    • __data を目印に、そこからアクセスされている値の型を推定する。 +
    • __data 用に型を用意しておいてLLVM IRにコンパイルするときに型を決めてあげればいける? +
    +
  • accessの仕方は構造体に倣う。 +
+
+ +
+

data segmentの実装

+
    +
  • message pack +
  • local用のmessage packの一つ手前の状態がほしい。 +
      +
    • c用のmessage packライブラリでは値を渡されたらすぐにバイト列に変換される。 +
    +
  • message packのフォーマットでは各要素の先頭に型情報を持っているから位置と名前を持っておけば特定のデータだけデシリアライズできる。型の照合もこれでできるはず。 +
      +
    • meta data segmentとして持つことになるはず。 +
    • 型、位置、名前の三つを持たせてこれだけ見て照合できるようにするほうが良い? +
    • message packのtype format +
    +
  • 変換用のコードをコンパイル時に埋め込んで通信時に適切に処理するようにする。 +
+
+ +
+ +