Mercurial > hg > Members > kaito > slides
comparison 2014/2014_02_11/2014_02_11.html @ 4:10fb2b05e390
Feb 18
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 18 Feb 2014 17:45:15 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
3:0dbe58077244 | 4:10fb2b05e390 |
---|---|
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <meta charset='utf-8'> | |
5 <title>Presentation</title> | |
6 <script src='./s6_trunk/slides.js'></script> | |
7 <style media='screen,projection'> | |
8 /**** | |
9 * Add your styles here. | |
10 */ | |
11 | |
12 body { font-size: 175%; } | |
13 | |
14 .step { color: silver; } /* or hide next steps e.g. .step { visibility: hidden; } */ | |
15 | |
16 .slide { | |
17 font-family: 'Open Sans', Arial, sans-serif; | |
18 | |
19 color: rgb(102, 102, 102); | |
20 text-shadow: 0 1px 1px rgba(0, 0, 0, .1); | |
21 } | |
22 | |
23 .slide h1, .slide h2, .slide h3 { | |
24 color: rgb(51, 51, 51); | |
25 } | |
26 | |
27 .slide pre { | |
28 font-family: 'Droid Sans Mono', 'Courier New', monospace; | |
29 font-size: 80%; | |
30 | |
31 padding: 5px 10px; | |
32 | |
33 margin-top: 40px; | |
34 margin-bottom: 40px; | |
35 | |
36 color: black; | |
37 background: rgb(240, 240, 240); | |
38 border: 1px solid rgb(224, 224, 224); | |
39 box-shadow: inset 0 2px 6px rgba(0, 0, 0, .1); | |
40 overflow: hidden; | |
41 } | |
42 | |
43 .slide code { | |
44 font-family: 'Droid Sans Mono', 'Courier New', monospace; | |
45 color: black; | |
46 } | |
47 </style> | |
48 </head> | |
49 <body> | |
50 | |
51 <section class='slides'> | |
52 <!-- Add your slides here. Delete or comment out the slides below. --> | |
53 <article> | |
54 <h1>CbCコンパイラの LLVM/clang 3.5上での実装</h1> | |
55 <p><br>Kaito Tokumori<br>February 11, 2014</p> | |
56 </article> | |
57 <article> | |
58 <h3>研究目的</h3> | |
59 <p> 当研究室ではプログラムをコードセグメント、データセグメントという単位を用いて書くという手法を提案している。その手法を用いてプログラミングを行う言語として"CbC"の開発を行っており、これはCの下位の言語である。CbCにおいてコードセグメント間の移動はgoto文を用いた軽量継続によって行われ、これはTail Call Eliminationという最適化の強制によって実現される。</p> | |
60 <p>本研究過去に開発されたmicro-c,GCC版のコンパイラに続くLLVM/clang上でのCbCコンパイラの開発を行う。</p> | |
61 </article> | |
62 | |
63 <article> | |
64 <h3>今回したこと</h3> | |
65 <ul> | |
66 <li>ちょっとしたバグ修正</li> | |
67 <li>例題を動かす</li> | |
68 </ul> | |
69 </article> | |
70 | |
71 <article> | |
72 <h3>ちょっとしたバグ修正</h3> | |
73 <ul> | |
74 <li>コードセグメントを呼び出すときに TailCall フラグが立っていない時エラーを出す処理の部分</li> | |
75 <li>呼び出されたコードセグメントを getCalledFunction で取得していたがポインタ経由でアクセスされたものの場合 この戻り値が null になる.</li> | |
76 </ul> | |
77 </article> | |
78 | |
79 <article> | |
80 <h3>例題を動かす</h3> | |
81 <ul> | |
82 <li>gcc では大丈夫だったが clang では関数のプロトタイプ宣言がないと怒られたので記述. </li> | |
83 <li>_CbC_return を __return に. </li> | |
84 <li>実装の問題で, {} を使わない if文の下に継続を用いると不具合があったので {} で閉じた. </li> | |
85 </ul> | |
86 </article> | |
87 | |
88 <article> | |
89 <h3>例題を動かす</h3> | |
90 <ul> | |
91 <li>動いた<ul> | |
92 <li>arg.c</li> | |
93 <li>conv.c</li> | |
94 <li>fact-a.c</li> | |
95 <li>factorial.c</li> | |
96 <li>goto.c</li> | |
97 <li>regexp</li> | |
98 <li>stack1.c</li> | |
99 </ul></li> | |
100 <li>動いてない<ul> | |
101 <li>conv1</li> | |
102 </ul></li> | |
103 </ul> | |
104 </article> | |
105 | |
106 <article> | |
107 <h3>conv1.c</h3> | |
108 <ul> | |
109 <li>O0, O1 だと問題なく動作.</li> | |
110 <li>O2 以降は引数1, 3の場合にセグフォ</li> | |
111 <li>O2 以降の時 TailCallFlag を付け損ねている場合がある. (他の最適化の影響?)</li> | |
112 <li>ループ回数を減らすと動作. 261989以上でセグフォ. </li> | |
113 <li>gcc側は逆に O2 以上だと動く...</li> | |
114 </ul> | |
115 </article> | |
116 | |
117 <article> | |
118 <h3>原因調査</h3> | |
119 <ul> | |
120 <li>Inliner の有無がバグの発生に関わっている.</li> | |
121 <li>Inliner の設定をO0,O1の場合に統一すると TCE も発生するしプログラムも動く.</li> | |
122 <li>Optimize Level に寄る Inliner の設定の違いは InlineThreshold の違い.</li> | |
123 </ul> | |
124 </article> | |
125 | |
126 <article> | |
127 <h3>次回課題</h3> | |
128 <ul> | |
129 <li>if文のやつの対応となんで TCE 失敗してるのか, conv1動かないのかの調査, 修正.</li> | |
130 <li>論文書かないといけない</li> | |
131 </ul> | |
132 </article> | |
133 </section> | |
134 </body> | |
135 </html> |