Mercurial > hg > Members > kaito > slides
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2014/2014_02_11/2014_02_11.html Tue Feb 18 17:45:15 2014 +0900 @@ -0,0 +1,135 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset='utf-8'> + <title>Presentation</title> + <script src='./s6_trunk/slides.js'></script> + <style media='screen,projection'> + /**** + * Add your styles here. + */ + + body { font-size: 175%; } + + .step { color: silver; } /* or hide next steps e.g. .step { visibility: hidden; } */ + + .slide { + font-family: 'Open Sans', Arial, sans-serif; + + color: rgb(102, 102, 102); + text-shadow: 0 1px 1px rgba(0, 0, 0, .1); + } + + .slide h1, .slide h2, .slide h3 { + color: rgb(51, 51, 51); + } + + .slide pre { + font-family: 'Droid Sans Mono', 'Courier New', monospace; + font-size: 80%; + + padding: 5px 10px; + + margin-top: 40px; + margin-bottom: 40px; + + color: black; + background: rgb(240, 240, 240); + border: 1px solid rgb(224, 224, 224); + box-shadow: inset 0 2px 6px rgba(0, 0, 0, .1); + overflow: hidden; + } + + .slide code { + font-family: 'Droid Sans Mono', 'Courier New', monospace; + color: black; + } + </style> + </head> + <body> + + <section class='slides'> + <!-- Add your slides here. Delete or comment out the slides below. --> + <article> + <h1>CbCコンパイラの LLVM/clang 3.5上での実装</h1> + <p><br>Kaito Tokumori<br>February 11, 2014</p> + </article> + <article> + <h3>研究目的</h3> + <p> 当研究室ではプログラムをコードセグメント、データセグメントという単位を用いて書くという手法を提案している。その手法を用いてプログラミングを行う言語として"CbC"の開発を行っており、これはCの下位の言語である。CbCにおいてコードセグメント間の移動はgoto文を用いた軽量継続によって行われ、これはTail Call Eliminationという最適化の強制によって実現される。</p> + <p>本研究過去に開発されたmicro-c,GCC版のコンパイラに続くLLVM/clang上でのCbCコンパイラの開発を行う。</p> + </article> + + <article> + <h3>今回したこと</h3> + <ul> + <li>ちょっとしたバグ修正</li> + <li>例題を動かす</li> + </ul> + </article> + + <article> + <h3>ちょっとしたバグ修正</h3> + <ul> + <li>コードセグメントを呼び出すときに TailCall フラグが立っていない時エラーを出す処理の部分</li> + <li>呼び出されたコードセグメントを getCalledFunction で取得していたがポインタ経由でアクセスされたものの場合 この戻り値が null になる.</li> + </ul> + </article> + + <article> + <h3>例題を動かす</h3> + <ul> + <li>gcc では大丈夫だったが clang では関数のプロトタイプ宣言がないと怒られたので記述. </li> + <li>_CbC_return を __return に. </li> + <li>実装の問題で, {} を使わない if文の下に継続を用いると不具合があったので {} で閉じた. </li> + </ul> + </article> + + <article> + <h3>例題を動かす</h3> + <ul> + <li>動いた<ul> + <li>arg.c</li> + <li>conv.c</li> + <li>fact-a.c</li> + <li>factorial.c</li> + <li>goto.c</li> + <li>regexp</li> + <li>stack1.c</li> + </ul></li> + <li>動いてない<ul> + <li>conv1</li> + </ul></li> + </ul> + </article> + + <article> + <h3>conv1.c</h3> + <ul> + <li>O0, O1 だと問題なく動作.</li> + <li>O2 以降は引数1, 3の場合にセグフォ</li> + <li>O2 以降の時 TailCallFlag を付け損ねている場合がある. (他の最適化の影響?)</li> + <li>ループ回数を減らすと動作. 261989以上でセグフォ. </li> + <li>gcc側は逆に O2 以上だと動く...</li> + </ul> + </article> + + <article> + <h3>原因調査</h3> + <ul> + <li>Inliner の有無がバグの発生に関わっている.</li> + <li>Inliner の設定をO0,O1の場合に統一すると TCE も発生するしプログラムも動く.</li> + <li>Optimize Level に寄る Inliner の設定の違いは InlineThreshold の違い.</li> + </ul> + </article> + + <article> + <h3>次回課題</h3> + <ul> + <li>if文のやつの対応となんで TCE 失敗してるのか, conv1動かないのかの調査, 修正.</li> + <li>論文書かないといけない</li> + </ul> + </article> + </section> + </body> +</html>