Mercurial > hg > Papers > 2011 > nobu-prosym
changeset 74:275073032132
modify
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 03 Jan 2012 19:21:51 +0900 |
parents | 9250ac87c2c7 |
children | 454ddda8d306 |
files | presen/index.html |
diffstat | 1 files changed, 31 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/index.html Tue Jan 03 14:03:13 2012 +0900 +++ b/presen/index.html Tue Jan 03 19:21:51 2012 +0900 @@ -9,7 +9,7 @@ font-size:28px; } td.srctd { -height:18em; +height:17em; } pre.srcbox { height: 100%; @@ -869,7 +869,7 @@ <div class="slide"> <h1>CbCの実装:TCE(末尾除去)の実装について</h1> <ul> - <li>以前はexpand_call関数を元にしたexpand_cbc_goto関数を作って条件を回避させていた。</li> + <li>以前はexpand_call関数を元にしたexpand_cbc_goto関数を作り条件を回避させていた。</li> <li>だがその方法だとexpand_call関数の修正にも合わせていく必要もあり管理も面倒であった。</li> <li>しかしtry_tail_callフラグを落とさせない方法にすることでexpand_cbc_goto関数はいらなくなり、管理が容易くなった。</li> </ul> @@ -877,11 +877,11 @@ <!-- PAGE --> <div class="slide"> <h1>CbCの実装</h1> + <li>CbCの基本機能を実現する為の実装は以上の2つになる。</li> <ul> <li>シンタックスの追加</li> <li>末尾除去によるコードセグメントへjmp命令での処理の移り</li> </ul> - <li>この2つがGCCにおけるCbC実装の基本の部分となる。</li> <li class="incremental">ここからはCbCの機能の拡張になる。</li> </div> <!-- PAGE --> @@ -941,7 +941,6 @@ <li>fastcall属性の付与によりMicro-C版に速度で勝るようになった。</li> <li></li> </ul> - <table width=100% border=1 class="center"> <caption>引数渡しに使われるレジスタの数(gcc)</caption> <tr> @@ -991,7 +990,9 @@ <!-- PAGE --> <div class="slide"> <h1>CbCの実装:環境付き継続</h1> +<!-- <li><small>生成しているコードと生成する為のコード</small></li> +--> <table border=1 width=100%> <tr> <td><small>生成しているコード</small></td> @@ -1000,8 +1001,8 @@ <tr class="srctr"> <td width=50% class="srctd"> <pre class="srcbox" style="width:25em;"> -goto c1(__return, __environment); +//goto c1(__return, __environment); goto c1(({ __label__ _cbc_exit0; static int retval; @@ -1018,7 +1019,30 @@ </pre> </td> <td width=50% class="srctd"> + <img src="./pix/STATEMENT_LIST_1.png" style="height: 10em;"> + </td> + </tr> + </table> + <li><small>retval変数の型は継続を行った関数と同じ戻値の型となる。</small></li> +<!-- + <li class="incremental">上記のコードをGCC内で生成すると次のようなTreeができる。</li> +--> + </div> + <!-- PAGE --> + <div class="slide"> + <h1>CbCの実装:環境付き継続</h1> + <table border=1 width=100%> + <tr> + <td width=50%><small>生成されるTree</small></td> + <td width=50%><small>生成する為のコード</small></td> + </tr> + <tr class="srctr"> + <td class="srctd"> + <img src="./pix/STATEMENT_LIST_1.png" style="height: 10em;"> + </td> + <td class="srctd"> <pre class="srcbox" style="width:25em;"> + case RID_CbC_RET: { tree value, stmt, label, tlab, decl; @@ -1064,17 +1088,10 @@ expr.value = c_finish_stmt_expr (location, stmt); expr.original_code = ERROR_MARK; } + </pre> </td> </tr> - </table> - <p>retval変数はint型になっているが、実際には継続を行った関数と同じ戻値の型となる。</p> - <li class="incremental">上記のコードをGCC内で生成すると次のようなTreeができる。</li> - </div> - <!-- PAGE --> - <div class="slide"> - <h1>CbCの実装:環境付き継続</h1> - <h2>作成されるTree</h2> - <img src="./pix/STATEMENT_LIST_1.png" style="height: 10em;"> + </table> <!-- <small> <pre>