comparison 2013/old/2013_07_16.html @ 0:845ff8ff4fc9

1st
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Tue, 14 Jan 2014 01:31:42 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:845ff8ff4fc9
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset='utf-8'>
5
6 <script
7 src='./trunk/slides.js'></script>
8 </head>
9
10 <body style='display: none'>
11 <section class='slides layout-regular template-default'>
12
13 <article>
14 <h1>CbCコンパイラのLLVM3.4上での実装</h1>
15 <p><br>Kaito Tokumori<br>July 16, 2013</p>
16 </article>
17
18 <article>
19 <br>
20 <h3>
21 研究背景と目的
22 </h3>
23 <p>
24 比較的歴史の古い言語であるCは普及率が高く多くのシステムに用いられている。そのCの問題のひとつに関数呼び出しの際のオーバーヘッドが大きいというものがある。当研究室ではこれらの問題に取り組むためにCountinuation based C (CbC)という言語の開発を行なっている。CbCはCの関数呼び出しやループ制御の代わりに継続を用いて制御を行うもので、Cの下位言語に当たる。本研究ではmicro-c,GCC版に次ぐLLVMベースのCbCコンパイラ開発を行う。
25 </p>
26 </article>
27
28 <article>
29 <br>
30 <h3>
31 今週の課題
32 </h3>
33 <ul>
34 <li>研究目的をゼミ用に小さくする</li>
35 <li>goto cs()のときtail call eliminationが行われるよう条件を満たさせる</li>
36 </ul>
37 <br>
38 </article>
39
40 <article>
41 <br>
42 <h3>
43 llvm Typeに__codeを認識させる
44 </h3>
45 <ul>
46 <li>clangのもつ***Tyとは別にllvm側にも***Typeあってそっちがvoidになってた。</li>
47 <li>flagをつけて__codeの時はそれで判別するようにした。</li>
48 </ul>
49 <br>
50 </article>
51
52 <article>
53 <br>
54 <h3>
55 TailCallElim
56 </h3>
57 <ul>
58 <li>とりあえず通してただけなので、flagをつけて-O2によって呼ばれてないときは__codeのみ触るようにした。</li>
59 <li>Alloca除去のためにSROAも。</li>
60 <li>これでやっとスタート(まだcallが残ってる)</li>
61 <li>factorialだとprint_factorialがcall。なぜかreturnで終わってるかどうかのところでひっかかてる。</li>
62 <li>普通に入れてもだめ。</li>
63 </ul>
64 <br>
65 </article>
66
67 </section>
68 </body>
69 </html>