Mercurial > hg > Papers > 2020 > anatofuz-sigos
changeset 41:7bba4d91db3b
...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 06 May 2020 19:00:13 +0900 |
parents | a91592fafeb1 |
children | 4c753956a272 |
files | paper/anatofuz-sigos.md paper/anatofuz-sigos.pdf paper/anatofuz-sigos.tex |
diffstat | 3 files changed, 16 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/anatofuz-sigos.md Wed May 06 15:56:16 2020 +0900 +++ b/paper/anatofuz-sigos.md Wed May 06 19:00:13 2020 +0900 @@ -244,7 +244,14 @@ この継続の分析方法の利点として、 既存のコードのBasic Block単位でCodeGearに変換可能であるため機械的にCodeGearへの変更が可能となる。 既存の関数上のアルゴリズムや処理に殆ど変更がなく変更可能であるために、 CodeGearで細分化して表現することは容易となる。 -しかし従来のxv6の関数呼び出しを元にしたAPIの中でCodeGearに分割しているために、 API内の処理の細分化は可能であるがAPIをつかった処理をCodeGearで適した形で表現できていない。 + +現在は従来のxv6の関数呼び出しを元にしたAPIの中でCodeGearに分割している。 +このために既存のAPI内の処理の細分化は可能とはなったが、 APIそのものをCodeGearを用いた継続に適した形には表現できていない。 +APIの内部のCodeGearはあくまでBasic Block単位に基づいているために、 状態遷移図で表現した際に自然言語で表現できないCodeGearも存在してしまう。 + +さらに、 `for`ループをCodeGearに分割することを考えるとループ中にループのindexを利用している場合は、 そのindexも次の継続に渡さなければならない。 +このためindexを使用していないCodeGearでも継続の引数としてindexを受け取り、 実際にindexを利用するCodeGearに伝搬させる必要がある。 +これらの問題を解決する為には、 計算の途中途中のDataGearに型を与え、 どの継続でDataGearの意味が変わるかを追求する必要がある。 # CbCを用いた部分的なxv6の書き換え
--- a/paper/anatofuz-sigos.tex Wed May 06 15:56:16 2020 +0900 +++ b/paper/anatofuz-sigos.tex Wed May 06 19:00:13 2020 +0900 @@ -350,7 +350,14 @@ この継続の分析方法の利点として、 既存のコードのBasic Block単位でCodeGearに変換可能であるため機械的にCodeGearへの変更が可能となる。 既存の関数上のアルゴリズムや処理に殆ど変更がなく変更可能であるために、 CodeGearで細分化して表現することは容易となる。 -しかし従来のxv6の関数呼び出しを元にしたAPIの中でCodeGearに分割しているために、 API内の処理の細分化は可能であるがAPIをつかった処理をCodeGearで適した形で表現できていない。 + +現在は従来のxv6の関数呼び出しを元にしたAPIの中でCodeGearに分割している。 +このために既存のAPI内の処理の細分化は可能とはなったが、 APIそのものをCodeGearを用いた継続に適した形には表現できていない。 +APIの内部のCodeGearはあくまでBasic Block単位に基づいているために、 状態遷移図で表現した際に自然言語で表現できないCodeGearも存在してしまう。 + +さらに、 \texttt{for}ループをCodeGearに分割することを考えるとループ中にループのindexを利用している場合は、 そのindexも次の継続に渡さなければならない。 +このためindexを使用していないCodeGearでも継続の引数としてindexを受け取り、 実際にindexを利用するCodeGearに伝搬させる必要がある。 +これらの問題を解決する為には、 計算の途中途中のDataGearに型を与え、 どの継続でDataGearの意味が変わるかを追求する必要がある。 \section{CbCを用いた部分的なxv6の書き換え}