Mercurial > hg > Papers > 2011 > nobu-thesis
comparison nobu-graduation.tex @ 1:fc26e9b8551f
modify tex
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Nov 2011 07:45:29 +0900 |
parents | 857b03a6ff06 |
children | a729fd12d13f |
comparison
equal
deleted
inserted
replaced
0:857b03a6ff06 | 1:fc26e9b8551f |
---|---|
131 %ここで問題となるのが、関数の宣言を全て読んだ後にハッシュテーブルに追加されるということである。 | 131 %ここで問題となるのが、関数の宣言を全て読んだ後にハッシュテーブルに追加されるということである。 |
132 %その為、関数の引数に自身の関数名がでるとそのような関数はないとエラーにされてしまう。 | 132 %その為、関数の引数に自身の関数名がでるとそのような関数はないとエラーにされてしまう。 |
133 %そこで typedefrec の付いた関数は先行して宣言を行うことにする。 | 133 %そこで typedefrec の付いた関数は先行して宣言を行うことにする。 |
134 %すると、宣言中でもハッシュテーブルから関数の情報をとることができるようになる。 | 134 %すると、宣言中でもハッシュテーブルから関数の情報をとることができるようになる。 |
135 | 135 |
136 \subsection{\_\_return 変数} | 136 %\subsection{\_\_return 変数} |
137 \subsection{環境付き継続} | |
137 CbC では通常の C の関数からコードセグメントに継続する際、 | 138 CbC では通常の C の関数からコードセグメントに継続する際、 |
138 元の C の関数に処理を戻すことがように \_\_return 変数が用意してある。 | 139 元の C の関数に処理を戻すことがように環境付き継続を実装してある。 |
139 \_\_return 変数は参照した関数のアドレスを覚えておく変数である。 | 140 環境付き継続は \_\_return 変数を参照することで用いることができる。 |
140 コードセグメントの継続の際に引数で渡して扱う。 | 141 \_\_return 変数は参照されると、参照した関数のアドレスを覚えておく。 |
141 引数として渡された \_\_return 変数をコードセグメントとして使うことで C の関数に戻る。 | 142 コードセグメントの継続の際に引数に \_\_return 変数を渡すことで、 |
143 関数の呼び出し元のアドレスも渡すことができる。 | |
144 後は引数として渡されたきたアドレスへ飛ぶことでいつでも C の関数に戻ることができる。 | |
142 | 145 |
143 \subsubsection{\_\_return 変数の問題} | 146 \subsubsection{\_\_return 変数の問題} |
144 しかし現在この \_\_return の値は static で実装されている。 | 147 しかし現在この \_\_return の値は static で実装されている。 |
145 これではスレッドセーフであるとは言えない。 | 148 これではスレッドセーフであるとは言えない。 |
146 マルチスレッドで\_\_returnを扱うと、元の関数に戻る前に \_\_return の値が書き換えられる可能性があるからである。 | 149 マルチスレッドで\_\_returnを扱うと、元の関数に戻る前に \_\_return の値が書き換えられる可能性があるからである。 |