# HG changeset patch # User anatofuz # Date 1588759213 -32400 # Node ID 7bba4d91db3b0e90251e79ab97d21747b6ef9be5 # Parent a91592fafeb19b7303191c2762371ee2114f7337 ... diff -r a91592fafeb1 -r 7bba4d91db3b paper/anatofuz-sigos.md --- 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の書き換え diff -r a91592fafeb1 -r 7bba4d91db3b paper/anatofuz-sigos.pdf Binary file paper/anatofuz-sigos.pdf has changed diff -r a91592fafeb1 -r 7bba4d91db3b paper/anatofuz-sigos.tex --- 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の書き換え}