comparison presen/slide.html @ 100:9974d2bc37ae

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 19 Feb 2019 16:02:14 +0900
parents f12222e30043
children 66688fe44eb1
comparison
equal deleted inserted replaced
99:8ad6ef82fdf5 100:9974d2bc37ae
8 <head> 8 <head>
9 <meta http-equiv="content-type" content="text/html;charset=utf-8"> 9 <meta http-equiv="content-type" content="text/html;charset=utf-8">
10 <title>CbCによるPerl6処理系</title> 10 <title>CbCによるPerl6処理系</title>
11 11
12 <meta name="generator" content="Slide Show (S9) v4.0.1 on Ruby 2.5.1 (2018-03-29) [x86_64-darwin17]"> 12 <meta name="generator" content="Slide Show (S9) v4.0.1 on Ruby 2.5.1 (2018-03-29) [x86_64-darwin17]">
13 <meta name="author" content="Takahiro Shimizu, Shinji Kono" > 13 <meta name="author" content="清水隆博" >
14 14
15 <!-- style sheet links --> 15 <!-- style sheet links -->
16 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> 16 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection">
17 <link rel="stylesheet" href="s6/themes/screen.css" media="screen"> 17 <link rel="stylesheet" href="s6/themes/screen.css" media="screen">
18 <link rel="stylesheet" href="s6/themes/print.css" media="print"> 18 <link rel="stylesheet" href="s6/themes/print.css" media="print">
75 </td> 75 </td>
76 </tr> 76 </tr>
77 <tr> 77 <tr>
78 <td> 78 <td>
79 <div align="left"> 79 <div align="left">
80 Takahiro Shimizu, Shinji Kono 80 清水隆博
81 琉球大学 81 並列信頼研
82 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> 82 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
83 </div> 83 </div>
84 </td> 84 </td>
85 </tr> 85 </tr>
86 </table> 86 </table>
127 <h2 id="continuation-based-c-cbc">Continuation Based C (CbC)</h2> 127 <h2 id="continuation-based-c-cbc">Continuation Based C (CbC)</h2>
128 <ul> 128 <ul>
129 <li>Continuation Based C (CbC) はCodeGearを単位として用いたプログラミング言語である.</li> 129 <li>Continuation Based C (CbC) はCodeGearを単位として用いたプログラミング言語である.</li>
130 <li>CodeGearはCの通常の関数呼び出しとは異なり,スタックに値を積まず, 次のCodeGearにgoto文によって遷移する.</li> 130 <li>CodeGearはCの通常の関数呼び出しとは異なり,スタックに値を積まず, 次のCodeGearにgoto文によって遷移する.</li>
131 <li>CodeGear同士の移動は、 状態遷移として捉える事が出来る</li> 131 <li>CodeGear同士の移動は、 状態遷移として捉える事が出来る</li>
132 <li>(図をいれる)</li> 132 </ul>
133 </ul> 133
134 <img src="fig/cbc_sample.svg" />
134 135
135 136
136 137
137 </div> 138 </div>
138 139
177 <li>バイトコードに変換するフロントエンド部分</li> 178 <li>バイトコードに変換するフロントエンド部分</li>
178 <li>バイトコードを解釈する仮想機械</li> 179 <li>バイトコードを解釈する仮想機械</li>
179 </ul> 180 </ul>
180 </li> 181 </li>
181 </ul> 182 </ul>
183
184 <img src="fig/bytecode_sample_generally_lang.svg" width="80%" />
182 185
183 186
184 187
185 </div> 188 </div>
186 189
663 666
664 </div> 667 </div>
665 668
666 <div class='slide'> 669 <div class='slide'>
667 <!-- _S9SLIDE_ --> 670 <!-- _S9SLIDE_ -->
668 <h2 id="基本ブロックとcodegear">基本ブロックとCodeGear</h2>
669
670 <ul>
671 <li>コンパイラなどでは, 関数あるいはループの先頭から, 別の関数呼び出し, あるいはジャンプするまでの間のコードを基本ブロックと呼ぶ</li>
672 <li>基本ブロックは入力に影響を受けず, 基本ブロックが決定したタイミングである決定的な処理を行う</li>
673 <li>予め実行する基本ブロックが確定していれば, その部分のみ抜き出してコンパイルする事が可能である</li>
674 <li>CbCのCodeGearは, この基本ブロックとみなす事が可能である</li>
675 <li>その為, NQPの例題の様に, 予め実行する基本ブロックが確定すれば, その部分の処理が可能となる</li>
676 <li>これを行うことで, CbCを用いてMoarVMのThreadedCode実装が可能となる</li>
677 </ul>
678
679 <pre><code>__code cbc_const_i64(INTERP i,__code cbc_next(INTERP i)){
680 GET_REG(i-&gt;cur_op, 0,i).i64 = MVM_BC_get_I64(i-&gt;cur_op, 2);
681 i-&gt;cur_op += 10;
682 goto cbc_next(i);
683 }
684
685 goto cbc_const_i64_16(i,cbc_gt_i_01);
686
687 __code cbc_gt_i_01(INTERP i){
688 goto cbc_gt_i(i,cbc_unless_i_01);
689 }
690
691 __code cbc_unless_i_01(INTERP i){
692 goto cbc_unless_i(i,cbc_osrpoint_01);
693 }
694 </code></pre>
695
696
697
698 </div>
699
700 <div class='slide'>
701 <!-- _S9SLIDE_ -->
702 <h2 id="cbcmoarvmの利点">CbCMoarVMの利点</h2> 671 <h2 id="cbcmoarvmの利点">CbCMoarVMの利点</h2>
703 <ul> 672 <ul>
704 <li>バイトコードインタプリタの箇所をモジュール化する事が可能となった 673 <li>バイトコードインタプリタの箇所をモジュール化する事が可能となった
705 <ul> 674 <ul>
706 <li>CodeGearの再利用性や記述生が高まる</li> 675 <li>CodeGearの再利用性や記述生が高まる</li>