view before_s6/2014/2014_01_24/2014_01_24.html @ 5:ab2d529bb1d7

add slide
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Tue, 14 Oct 2014 19:17:35 +0900
parents 2014/2014_01_24/2014_01_24.html@0dbe58077244
children
line wrap: on
line source

<!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コンパイラのLLVM3.5上での実装</h1>
        <p><br>Kaito Tokumori<br>January 24, 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>環境付き継続の実装<ul>
              <li>元の関数の型を調べて変数等を生成する</li>
	      <li>setjmpで使う環境保持のための変数をintの配列からjmp_bufに変更</li>
              <li>__CbC_env構造体の定義を __code を見つけたらではなく 環境付き継続が使用されることが分かったら行うように変更</li>
	  </ul></li>
	</ul>
      </article>
      
      <article>
	<h3>元の関数に合わせた変数等の生成</h3>
	<ul>
	  <li>元の関数に合わせた型にしないといけないのは以下の4つ<ul>
	      <li>継続元の関数内に宣言する戻り値を代入する変数</li>
	      <li>__CbC_return変数の引数の型の部分</li>
	      <li>帰還用コードセグメントの引数の型</li>
	      <li>帰還用コードセグメントで戻り値を代入する部分でのキャストの型</li>
	  </ul></li>
	</ul>
      </article>

      <article>
	<h3>元の関数に合わせた変数等の生成</h3>
	<ul>
	  <li>関数の型はFunctionDecl内でQualTypeという形で保持されている</li>
	  <li>変数や引数等の型もDeclを継承したクラス内でQualTypeという形で表される</li>
	  <li>つまり今の関数のQualTypeをとってきてそれをsetすればいい</li>
	</ul>
      </article>

      <article>
	<h3>環境付き継続TODO</h3>
        <ul>
          <li>__return, __environment変数がきた時の処理の変更</li>
        </ul>
      </article>

      <article>
	<h3>卒論目次</h3>
        <ol>
	  <li>研究背景と目的</li>
	  </ul></li>
          <li>Continuation based C (CbC)</li>
          <li>LLVM, clang<ul>
	      <li>LLVM</li>
	      <li>clang</li>
	      <!--
		  <li>clangAST</li>
	      <li>LLVM IR</li>
	      <li>SelectionDAG</li>
	      <li>MachineInstr</li>
	      http://llvm.org/docs/CodeGenerator.html に詳しく載ってるです。これいる?
	      -->
	      <li>Tail Call Elimination (TCE)</li>
	  </ul></li>
          <li>実装<ul>
	      <li>__code型の追加</li>
	      <li>gotoシンタックスの追加</li>
	      <li>TCEの強制</li>
	      <li>環境付き継続</li>
	  </ul></li>
	  <li>評価</li>
	  <li>結論<ul>
	      <li>まとめ</li>
	      <li>今後の課題</li>
	  </ul></li>
        </ol>

      </article>

    </section>
  </body>
</html>