Mercurial > hg > Papers > 2021 > anatofuz-master
diff paper/chapter/02-cbc.tex @ 150:4c0d2a58f6e5
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 16 Feb 2021 14:23:37 +0900 |
parents | 911bf1a2c6fa |
children | c9fb8f47a921 |
line wrap: on
line diff
--- a/paper/chapter/02-cbc.tex Mon Feb 15 15:20:40 2021 +0900 +++ b/paper/chapter/02-cbc.tex Tue Feb 16 14:23:37 2021 +0900 @@ -70,8 +70,10 @@ CbCを利用したシステムコールのディスパッチ部分をソースコード\ref{src:cbc_syscall_example}に示す。 この例題では特定のシステムコールの場合、 CbCで実装された処理に\texttt{goto}文をつかって継続する。 例題ではCodeGearへのアドレスが配列\texttt{cbccodes}に格納されている。 -引数として渡している\texttt{cbc\_ret}は、 システムコールの返り値の数値をレジスタに代入するCodeGearである。 +引数として渡している\texttt{cbc\_ret}は、 システムコールの返り値の数値をレジスタに代入するCodeGearのアドレスである。 実際に\texttt{cbc\_ret}に継続が行われるのは、 \texttt{read}などのシステムコールの一連の処理の継続が終わったタイミングである。 +この例題はGearsOSにあるStubCodeGearの仕組みを導入していない為、 直接CodeGearのアドレスを利用し継続している。 +GearsOSでは直接CodeGearのアドレスを利用するのはメタ計算のみであり、 ノーマルレベルではアドレスを扱うことはない。 \lstinputlisting[label=src:cbc_syscall_example, caption=CbCを利用したシステムコールのディスパッチ]{src/xv6_syscall.cbc}