comparison 2013/old/2013_06_15.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>June 25, 2013</p>
16 </article>
17
18 <article>
19 <br>
20 <h3>
21 研究目的
22 </h3>
23 <ul>
24 <li>当研究室で開発しているContinuation based C(CbC)を用いたtail call eliminationの強制。</li>
25 <li>tail call eliminationにより、Cにおける大きなオーバーヘッドである関数呼び出しの際のreturnの削減。</li>
26 <li>goto文による処理の記述は状態遷移系とも相性が良い。</li>
27 <li>Micro-C,GCC版に次ぐllvmを使用したコンパイラの実装。</li>
28 </ul>
29 </article>
30
31 <article>
32 <br>
33 <h3>
34 今週したこと
35 </h3>
36 <ul>
37 <li>拡張子がcbcのファイルをコンパイルできるように</li>
38 <li>拡張子がcbcのばあいにO2フラグの強制付与</li>
39 <li>llvmでtail call optimizationが行われる条件について調査</li>
40 </ul>
41 <br>
42 </article>
43
44 <article>
45 <br>
46 <h3>
47 O2の付与
48 </h3>
49 <ul>
50 <li>IK_CbCを宣言して拡張子がcbcの場合はInputKindをCbCに</li>
51 <li>これであとでオプション指定するときにIK_CbCならOptLevelを2ってできる</li>
52 </ul>
53 <br>
54 </article>
55
56 <article>
57 <br>
58 <h3>
59 llvmでtail call optimizationが行われる条件(x86/x86-64の場合)
60 </h3>
61 <ul>
62 <li>CallerとCalleeの両方のcalling conventionがfastcc,cc10,cc11のいずれか</li>
63 <li>callの直後にretが来る
64 <ul>
65 <li>ret voidというのが自動的に付加されるので特に考えなくていい?</li>
66 </ul>
67 </li>
68 <li>tailcalloptが有効</li>
69 <li>variable argument listsを使用していない</li>
70 </ul>
71 <br>
72 </article>
73
74 <article>
75 <br>
76 <h3>
77 llvmでSibling call optimizationが行われる条件
78 </h3>
79 <ul>
80 <li>x86/x86-64じゃなきゃだめ</li>
81 <li>CallerとCalleeのcalling conventionがcかfastccで一致している</li>
82 <li>callの直後にretが来る</li>
83 <li>CallerとCalleeの戻り値の方が一致していてCalleeの戻り値が使用されない
84 <ul>
85 <li>code segmentはvoidで統一されているので無問題</li>
86 </ul>
87 </li>
88 <li>variable argument listsを使用していない</li>
89 </ul>
90 <br>
91 </article>
92 <article>
93 <br>
94 <h3>
95 次したいこと
96 </h3>
97 <ul>
98 <li>拡張子に頼らないで.cでも__codeが入っていたらO2入れるようにする必要がある?</li>
99 <li>tail call eliminationを満たす条件を__codeが満たすようにする(そうすればO2だからかってにjmpになる説)</li>
100 </ul>
101 <br>
102 </article>
103
104 </section>
105 </body>
106 </html>