changeset 95:77fb6e9e3c08

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 19 Feb 2019 15:09:55 +0900
parents 19df48819b8d
children f12222e30043
files presen/slide.html presen/slide.md presen/slide.pdf.html
diffstat 3 files changed, 137 insertions(+), 108 deletions(-) [+]
line wrap: on
line diff
--- a/presen/slide.html	Tue Feb 19 15:02:16 2019 +0900
+++ b/presen/slide.html	Tue Feb 19 15:09:55 2019 +0900
@@ -387,12 +387,23 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="cbcmoarvmのバイトコードディスパッチ">CbCMoarVMのバイトコードディスパッチ</h2>
+<h2 id="cbcでの変換">CbCでの変換</h2>
 
 <ul>
   <li>CbCのCodeGearは関数よりも小さな単位である</li>
   <li>その為、 従来は関数化出来なかった単位をCodeGearに変換する事が出来る</li>
   <li>CbCをMoarVMに適応すると, ラベルなどで制御していた命令に対応する処理をCodeGearで記述する事が可能である</li>
+</ul>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
+<h2 id="cbcmoarvmのバイトコードディスパッチ">CbCMoarVMのバイトコードディスパッチ</h2>
+
+<ul>
   <li>オリジナルでは, マクロ <code>NEXT</code> が担当していた, 次のバイトコードへの移動は, NEXT相当のCodeGear <code>cbc_next</code>で処理を行う</li>
   <li>CodeGearの入出力として, MoarVMなどの情報をまとめた構造体を利用する</li>
 </ul>
@@ -450,7 +461,7 @@
 
 <ul>
   <li>CodeGearテーブルは引数としてINTERを受け取るCodeGearの配列として定義する</li>
-  <li>テーブルとして宣言することで、 バイトコードの数をそのままテーブルに反映させる事が可能である</li>
+  <li>テーブルとして宣言することで、 バイトコードの値をそのままテーブルに反映させる事が可能である</li>
 </ul>
 
 <pre><code>__code (* CODES[])(INTERP) = {
@@ -473,43 +484,6 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="cbcmoarvmの利点">CbCMoarVMの利点</h2>
-
-<ul>
-  <li>バイトコードインタプリタの箇所をモジュール化する事が可能となった
-    <ul>
-      <li>CodeGearの再利用性や記述生が高まる</li>
-      <li>CodeGearは関数の様に扱えるの為、 命令ディスパッチの最適化につながる実装が可能となった</li>
-    </ul>
-  </li>
-  <li>デバッグ時にラベルではなくCodeGearにbreakpointを設定可能となった
-    <ul>
-      <li>デバッグが安易となる</li>
-    </ul>
-  </li>
-  <li>CPUがキャッシュに収まる範囲の命令の場合、 通常のMoarVMよりも高速に動作する</li>
-</ul>
-
-
-
-</div>
-
-<div class='slide'>
-  <!-- _S9SLIDE_ -->
-<h2 id="cbcmoarvmの欠点">CbCMoarVMの欠点</h2>
-
-<ul>
-  <li>MoarVMのオリジナルの更新頻度が高い為, 追従していく必要がある</li>
-  <li>CodeGear側からCに戻る際に手順が複雑となる</li>
-  <li>CodeGearを単位として用いる事で複雑なプログラミングが要求される.</li>
-</ul>
-
-
-
-</div>
-
-<div class='slide'>
-  <!-- _S9SLIDE_ -->
 <h2 id="moarvmのトレース">MoarVMのトレース</h2>
 
 <ul>
@@ -594,9 +568,14 @@
 <h2 id="現在のcbcmoarvm">現在のCbCMoarVM</h2>
 
 <ul>
-  <li>現在はNQP, Rakudoのセルフビルドが達成でき, オリジナルと同等のテスト達成率を持っている</li>
-  <li>moarの起動時のオプションとして <code>--cbc</code> を与えることによりCbCで動き, そうでない場合は通常のCで記述された箇所で実行される</li>
-  <li>Perl6の実行バイナリperl6, NQPの実行バイナリnqp は, それぞれmoarを起動するシェルスクリプトである為, <code>--cbc</code> オプションをシェルスクリプト内に書き加えることで, Perl6, NQPがそれぞれCbCで起動する</li>
+  <li>現在はNQP, Rakudoのセルフビルドが達成でき, オリジナルと同等のテスト達成率を持っている
+    <ul>
+      <li>その為、 NQP, Rakudoの実行コマンドであるnqp perl6が起動する様になった</li>
+    </ul>
+  </li>
+  <li>moarの起動時のオプションとして <code>--cbc</code> を与えることによりCbCかオリジナルを選択可能である</li>
+  <li>Perl6の実行バイナリperl6, NQPの実行バイナリnqp は, それぞれmoarを起動するシェルスクリプトである</li>
+  <li><code>--cbc</code> オプションをシェルスクリプト内に書き加えることで, Perl6, NQPがそれぞれCbCで起動する</li>
 </ul>
 
 <pre><code>#!/bin/sh
@@ -746,12 +725,46 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
+<h2 id="cbcmoarvmの利点">CbCMoarVMの利点</h2>
+<ul>
+  <li>バイトコードインタプリタの箇所をモジュール化する事が可能となった
+    <ul>
+      <li>CodeGearの再利用性や記述生が高まる</li>
+      <li>CodeGearは関数の様に扱える為、 命令ディスパッチの最適化につながる実装が可能となった</li>
+    </ul>
+  </li>
+  <li>デバッグ時にラベルではなくCodeGearにbreakpointを設定可能となった
+    <ul>
+      <li>デバッグが安易となる</li>
+    </ul>
+  </li>
+  <li>CPUがキャッシュに収まる範囲の命令の場合、 通常のMoarVMよりも高速に動作する</li>
+</ul>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
+<h2 id="cbcmoarvmの欠点">CbCMoarVMの欠点</h2>
+
+<ul>
+  <li>MoarVMのオリジナルの更新頻度が高い為, 追従していく必要がある</li>
+  <li>CodeGear側からCに戻る際に手順が複雑となる</li>
+  <li>CodeGearを単位として用いる事で複雑なプログラミングが要求される.</li>
+</ul>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
 <h2 id="まとめと今後の課題">まとめと今後の課題</h2>
 <ul>
   <li>継続と基本としたC言語 Continuation Based Cを用いてPerl6の処理系の一部を書き直した</li>
   <li>CbCの持つCodeGearによって, 本来はモジュール化出来ない箇所をモジュール化する事が出来た</li>
-  <li>MoarVMの速度改善にはThreadedCodeが期待でき, CodeGearベースの命令ディスパッチとThreadedCodeは相性が良いと考えられる</li>
-  <li>今後は実行するバイトコードによりThreadedCode箇所と通常の配列を読み取り, 次のCodeGearを計算する処理を両立させていく</li>
 </ul>
 
 
--- a/presen/slide.md	Tue Feb 19 15:02:16 2019 +0900
+++ b/presen/slide.md	Tue Feb 19 15:09:55 2019 +0900
@@ -183,11 +183,14 @@
 
 
 
-## CbCMoarVMのバイトコードディスパッチ
+## CbCでの変換
 
 - CbCのCodeGearは関数よりも小さな単位である
 - その為、 従来は関数化出来なかった単位をCodeGearに変換する事が出来る
 - CbCをMoarVMに適応すると, ラベルなどで制御していた命令に対応する処理をCodeGearで記述する事が可能である
+
+## CbCMoarVMのバイトコードディスパッチ
+
 - オリジナルでは, マクロ `NEXT` が担当していた, 次のバイトコードへの移動は, NEXT相当のCodeGear `cbc_next`で処理を行う
 - CodeGearの入出力として, MoarVMなどの情報をまとめた構造体を利用する
 
@@ -232,7 +235,7 @@
 ## CbCMoarVMのCodeGearテーブル
 
 - CodeGearテーブルは引数としてINTERを受け取るCodeGearの配列として定義する
-- テーブルとして宣言することで、 バイトコードの数をそのままテーブルに反映させる事が可能である
+- テーブルとして宣言することで、 バイトコードの値をそのままテーブルに反映させる事が可能である
 
 ```
 __code (* CODES[])(INTERP) = {
@@ -250,20 +253,6 @@
 ```
 
 
-## CbCMoarVMの利点
-
-- バイトコードインタプリタの箇所をモジュール化する事が可能となった
-    - CodeGearの再利用性や記述生が高まる
-    - CodeGearは関数の様に扱える為、 命令ディスパッチの最適化につながる実装が可能となった
-- デバッグ時にラベルではなくCodeGearにbreakpointを設定可能となった
-    - デバッグが安易となる
-- CPUがキャッシュに収まる範囲の命令の場合、 通常のMoarVMよりも高速に動作する
-
-## CbCMoarVMの欠点
-
-- MoarVMのオリジナルの更新頻度が高い為, 追従していく必要がある
-- CodeGear側からCに戻る際に手順が複雑となる
-- CodeGearを単位として用いる事で複雑なプログラミングが要求される.
 
 
 
@@ -332,8 +321,10 @@
 ## 現在のCbCMoarVM
 
 - 現在はNQP, Rakudoのセルフビルドが達成でき, オリジナルと同等のテスト達成率を持っている
-- moarの起動時のオプションとして `--cbc` を与えることによりCbCで動き, そうでない場合は通常のCで記述された箇所で実行される
-- Perl6の実行バイナリperl6, NQPの実行バイナリnqp は, それぞれmoarを起動するシェルスクリプトである為, `--cbc` オプションをシェルスクリプト内に書き加えることで, Perl6, NQPがそれぞれCbCで起動する
+    - その為、 NQP, Rakudoの実行コマンドであるnqp perl6が起動する様になった
+- moarの起動時のオプションとして `--cbc` を与えることによりCbCかオリジナルを選択可能である
+- Perl6の実行バイナリperl6, NQPの実行バイナリnqp は, それぞれmoarを起動するシェルスクリプトである
+- `--cbc` オプションをシェルスクリプト内に書き加えることで, Perl6, NQPがそれぞれCbCで起動する
 
 ```
 #!/bin/sh
@@ -432,10 +423,22 @@
 }
 ```
 
+## CbCMoarVMの利点
+- バイトコードインタプリタの箇所をモジュール化する事が可能となった
+    - CodeGearの再利用性や記述生が高まる
+    - CodeGearは関数の様に扱える為、 命令ディスパッチの最適化につながる実装が可能となった
+- デバッグ時にラベルではなくCodeGearにbreakpointを設定可能となった
+    - デバッグが安易となる
+- CPUがキャッシュに収まる範囲の命令の場合、 通常のMoarVMよりも高速に動作する
+
+## CbCMoarVMの欠点
+
+- MoarVMのオリジナルの更新頻度が高い為, 追従していく必要がある
+- CodeGear側からCに戻る際に手順が複雑となる
+- CodeGearを単位として用いる事で複雑なプログラミングが要求される.
+
 
 ## まとめと今後の課題
 - 継続と基本としたC言語 Continuation Based Cを用いてPerl6の処理系の一部を書き直した
 - CbCの持つCodeGearによって, 本来はモジュール化出来ない箇所をモジュール化する事が出来た
-- MoarVMの速度改善にはThreadedCodeが期待でき, CodeGearベースの命令ディスパッチとThreadedCodeは相性が良いと考えられる
-- 今後は実行するバイトコードによりThreadedCode箇所と通常の配列を読み取り, 次のCodeGearを計算する処理を両立させていく
 
--- a/presen/slide.pdf.html	Tue Feb 19 15:02:16 2019 +0900
+++ b/presen/slide.pdf.html	Tue Feb 19 15:09:55 2019 +0900
@@ -371,12 +371,23 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="cbcmoarvmのバイトコードディスパッチ">CbCMoarVMのバイトコードディスパッチ</h2>
+<h2 id="cbcでの変換">CbCでの変換</h2>
 
 <ul>
   <li>CbCのCodeGearは関数よりも小さな単位である</li>
   <li>その為、 従来は関数化出来なかった単位をCodeGearに変換する事が出来る</li>
   <li>CbCをMoarVMに適応すると, ラベルなどで制御していた命令に対応する処理をCodeGearで記述する事が可能である</li>
+</ul>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
+<h2 id="cbcmoarvmのバイトコードディスパッチ">CbCMoarVMのバイトコードディスパッチ</h2>
+
+<ul>
   <li>オリジナルでは, マクロ <code>NEXT</code> が担当していた, 次のバイトコードへの移動は, NEXT相当のCodeGear <code>cbc_next</code>で処理を行う</li>
   <li>CodeGearの入出力として, MoarVMなどの情報をまとめた構造体を利用する</li>
 </ul>
@@ -434,7 +445,7 @@
 
 <ul>
   <li>CodeGearテーブルは引数としてINTERを受け取るCodeGearの配列として定義する</li>
-  <li>テーブルとして宣言することで、 バイトコードの数をそのままテーブルに反映させる事が可能である</li>
+  <li>テーブルとして宣言することで、 バイトコードの値をそのままテーブルに反映させる事が可能である</li>
 </ul>
 
 <pre><code>__code (* CODES[])(INTERP) = {
@@ -457,43 +468,6 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
-<h2 id="cbcmoarvmの利点">CbCMoarVMの利点</h2>
-
-<ul>
-  <li>バイトコードインタプリタの箇所をモジュール化する事が可能となった
-    <ul>
-      <li>CodeGearの再利用性や記述生が高まる</li>
-      <li>CodeGearは関数の様に扱えるの為、 命令ディスパッチの最適化につながる実装が可能となった</li>
-    </ul>
-  </li>
-  <li>デバッグ時にラベルではなくCodeGearにbreakpointを設定可能となった
-    <ul>
-      <li>デバッグが安易となる</li>
-    </ul>
-  </li>
-  <li>CPUがキャッシュに収まる範囲の命令の場合、 通常のMoarVMよりも高速に動作する</li>
-</ul>
-
-
-
-</div>
-
-<div class='slide'>
-  <!-- _S9SLIDE_ -->
-<h2 id="cbcmoarvmの欠点">CbCMoarVMの欠点</h2>
-
-<ul>
-  <li>MoarVMのオリジナルの更新頻度が高い為, 追従していく必要がある</li>
-  <li>CodeGear側からCに戻る際に手順が複雑となる</li>
-  <li>CodeGearを単位として用いる事で複雑なプログラミングが要求される.</li>
-</ul>
-
-
-
-</div>
-
-<div class='slide'>
-  <!-- _S9SLIDE_ -->
 <h2 id="moarvmのトレース">MoarVMのトレース</h2>
 
 <ul>
@@ -578,9 +552,14 @@
 <h2 id="現在のcbcmoarvm">現在のCbCMoarVM</h2>
 
 <ul>
-  <li>現在はNQP, Rakudoのセルフビルドが達成でき, オリジナルと同等のテスト達成率を持っている</li>
-  <li>moarの起動時のオプションとして <code>--cbc</code> を与えることによりCbCで動き, そうでない場合は通常のCで記述された箇所で実行される</li>
-  <li>Perl6の実行バイナリperl6, NQPの実行バイナリnqp は, それぞれmoarを起動するシェルスクリプトである為, <code>--cbc</code> オプションをシェルスクリプト内に書き加えることで, Perl6, NQPがそれぞれCbCで起動する</li>
+  <li>現在はNQP, Rakudoのセルフビルドが達成でき, オリジナルと同等のテスト達成率を持っている
+    <ul>
+      <li>その為、 NQP, Rakudoの実行コマンドであるnqp perl6が起動する様になった</li>
+    </ul>
+  </li>
+  <li>moarの起動時のオプションとして <code>--cbc</code> を与えることによりCbCかオリジナルを選択可能である</li>
+  <li>Perl6の実行バイナリperl6, NQPの実行バイナリnqp は, それぞれmoarを起動するシェルスクリプトである</li>
+  <li><code>--cbc</code> オプションをシェルスクリプト内に書き加えることで, Perl6, NQPがそれぞれCbCで起動する</li>
 </ul>
 
 <pre><code>#!/bin/sh
@@ -730,12 +709,46 @@
 
 <div class='slide'>
   <!-- _S9SLIDE_ -->
+<h2 id="cbcmoarvmの利点">CbCMoarVMの利点</h2>
+<ul>
+  <li>バイトコードインタプリタの箇所をモジュール化する事が可能となった
+    <ul>
+      <li>CodeGearの再利用性や記述生が高まる</li>
+      <li>CodeGearは関数の様に扱える為、 命令ディスパッチの最適化につながる実装が可能となった</li>
+    </ul>
+  </li>
+  <li>デバッグ時にラベルではなくCodeGearにbreakpointを設定可能となった
+    <ul>
+      <li>デバッグが安易となる</li>
+    </ul>
+  </li>
+  <li>CPUがキャッシュに収まる範囲の命令の場合、 通常のMoarVMよりも高速に動作する</li>
+</ul>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
+<h2 id="cbcmoarvmの欠点">CbCMoarVMの欠点</h2>
+
+<ul>
+  <li>MoarVMのオリジナルの更新頻度が高い為, 追従していく必要がある</li>
+  <li>CodeGear側からCに戻る際に手順が複雑となる</li>
+  <li>CodeGearを単位として用いる事で複雑なプログラミングが要求される.</li>
+</ul>
+
+
+
+</div>
+
+<div class='slide'>
+  <!-- _S9SLIDE_ -->
 <h2 id="まとめと今後の課題">まとめと今後の課題</h2>
 <ul>
   <li>継続と基本としたC言語 Continuation Based Cを用いてPerl6の処理系の一部を書き直した</li>
   <li>CbCの持つCodeGearによって, 本来はモジュール化出来ない箇所をモジュール化する事が出来た</li>
-  <li>MoarVMの速度改善にはThreadedCodeが期待でき, CodeGearベースの命令ディスパッチとThreadedCodeは相性が良いと考えられる</li>
-  <li>今後は実行するバイトコードによりThreadedCode箇所と通常の配列を読み取り, 次のCodeGearを計算する処理を両立させていく</li>
 </ul>