view 2015/2015_04_14/slide.md @ 1:3b7da0b661cc

Add slide.md
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Tue, 04 Aug 2015 18:12:46 +0900
parents
children
line wrap: on
line source

title: CbCのData Segmentの設計
author: Tatsuki IHA
profile:
lang: Japanese

# 研究目的
- 当研究室では, プログラムをコードセグメント, データセグメントという単位を用いて記述する手法を提案している.
- この手法を用いてプログラミングを行うContinuation based C というプログラミング言語を開発しており, これはCの下位言語にあたる.
- この研究ではGearsのData Segmentの設計を行いつつ, CbCでのData Segmentの設計, 実装を行うことを目的とする.

# 近況報告
- GearsのData Segmentの設計

# GearsのCode Segment
- In Data Segmentの受け取り
- Out Data segmentの生成(flipする場合もあり)
- Code Segmentは次のCode Segmentを持っていない
- Meta Code Segmentに次のCode Segmentの参照を持たせる

# GearsのCode Segment
![](./pictures/code_segment.jpg)

# GearsのCode Segment
![](./pictures/relation_cs_and_ds.jpg)

# GearsのData Segment
- Data Segmentは実際の値を持たせる
- Meta Data Segmentにはsignatureへの参照, 次のData Segmentの参照を持たせる

# GearsのData Segment
![](./pictures/data_segment.jpg)

# Data SegmentでのList
- Data Segmentに値
- Meta Data Segmentに繋がっているData Segmentの参照をもたせる

# Data SegmentでのList
![](./pictures/list.jpg)

# GearsでのAllocateContext実装
- Code Segmentの参照はContextでもつ
- 呼ぶCode Segmentのenumでもち, Meta Code Segmentには次のCode Segmentのenumを渡す


# AllocateContextの初期化
``` C
__code initAllocateContext(struct Context* context) {
    
    ....
    context->code[Code1]    = code1;
    context->code[Code2]    = code2;
    context->code[Code3]    = code3;
    ....
}
```

# Meta Code Segment
``` C
__code meta(struct Context* context, enum Code next) {
    goto (context->code[next])(context);
}
```