0
|
1 title: CbCのData Segmentの設計
|
|
2 author: Tatsuki IHA
|
|
3 profile:
|
|
4 lang: Japanese
|
|
5
|
|
6 # 研究目的
|
|
7 - 当研究室では, プログラムをコードセグメント, データセグメントという単位を用いて記述する手法を提案している.
|
|
8 - この手法を用いてプログラミングを行うContinuation based C というプログラミング言語を開発しており, これはCの下位言語にあたる.
|
|
9 - この研究ではGearsのData Segmentの設計を行いつつ, CbCでのData Segmentの設計, 実装を行うことを目的とする.
|
|
10
|
|
11 # 近況報告
|
|
12 - GearsのData Segmentの設計
|
|
13
|
|
14 # GearsのCode Segment
|
|
15 - In Data Segmentの受け取り
|
|
16 - Out Data segmentの生成(flipする場合もあり)
|
|
17 - Code Segmentは次のCode Segmentを持っていない
|
|
18 - Meta Code Segmentに次のCode Segmentの参照を持たせる
|
|
19
|
|
20 # GearsのCode Segment
|
|
21 ![](./pictures/code_segment.jpg)
|
|
22
|
|
23 # GearsのCode Segment
|
|
24 ![](./pictures/relation_cs_and_ds.jpg)
|
|
25
|
|
26 # GearsのData Segment
|
|
27 - Data Segmentは実際の値を持たせる
|
|
28 - Meta Data Segmentにはsignatureへの参照, 次のData Segmentの参照を持たせる
|
|
29
|
|
30 # GearsのData Segment
|
|
31 ![](./pictures/data_segment.jpg)
|
|
32
|
|
33 # Data SegmentでのList
|
|
34 - Data Segmentに値
|
|
35 - Meta Data Segmentに繋がっているData Segmentの参照をもたせる
|
|
36
|
|
37 # Data SegmentでのList
|
|
38 ![](./pictures/list.jpg)
|
|
39
|
|
40 # GearsでのAllocateContext実装
|
|
41 - Code Segmentの参照はContextでもつ
|
|
42 - 呼ぶCode Segmentのenumでもち, Meta Code Segmentには次のCode Segmentのenumを渡す
|
|
43
|
|
44
|
|
45 # AllocateContextの初期化
|
|
46 ``` C
|
|
47 __code initAllocateContext(struct Context* context) {
|
|
48
|
|
49 ....
|
|
50 context->code[Code1] = code1;
|
|
51 context->code[Code2] = code2;
|
|
52 context->code[Code3] = code3;
|
|
53 ....
|
|
54 }
|
|
55 ```
|
|
56
|
|
57 # Meta Code Segment
|
|
58 ``` C
|
|
59 __code meta(struct Context* context, enum Code next) {
|
|
60 goto (context->code[next])(context);
|
|
61 }
|
|
62 ```
|