Mercurial > hg > Papers > 2019 > anatofuz-thesis
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->cur_op, 0,i).i64 = MVM_BC_get_I64(i->cur_op, 2); | |
681 i->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> |