トの作成/スイッチ処理の移植である。ストとやらの実体が何なのかを知らなければどうしようもない。サの全内部状態と言ってしまう。ここでの全内部状態とは何か。(PC)をも含むまるっきり全部である。プロセッサの全内部状態と言っても可だ。(SP)さえ適切に保存、復帰されれば、PCについての特別な記述は無用である。容されたレジスタがあるので、それらに関する記述は無用となる。関数呼出ならSRを考慮する必要がないのは考えるまでもない。抽象化コンポーネント、src/h8/hospac.srcを見てみよう。実物も資料も無いので推定)。*pk_pre_ctxinf番地に保存する。12行の逆の操作でコンテキストを復帰するということだ。*nxt_ctxinf);により、関数に実行が移った瞬間のコンテキスト情報とスタック。コンテキストBこの関数呼出における戻り番地は、コンテキストAのスタックに積まれている。スタックに保存しなければならないレジスタの格納が完了。この時のスタックポインタ、er7=spAを次の13行で*pre_ctxinfが指す番地に保存する。*nxt_ctxinfが指す番地に保存されていたスタックポインタspBををer7に復帰。er6〜er2にはそれぞれ、er6_B〜er2_Bが復帰されている。これでrtsが実行されると、戻る先は「コンテキストAにおいてhospac_swi_cnt()した次」ではなく、「コンテキストBにおいてhospac_swi_cnt()した次」になる。hospac_swi_cntを呼び出す前と後で、PCを含む全レジスタ(er0,er1は破壊される前提でコードが吐かれているので、プログラム実行には全く影響が無い)〜コンテキストが交替しているではないか。これと等価なことを、gccの仕様とSH4に合わせて書いてみよう。FPUレジスタは取り敢えず無視しよう。PRレジスタに格納する。してスタックに保存しておく必要がある。これだけ分かればもう書けたも同然。*nxt_ctxinf);により、関数に実行が移った瞬間のコンテキスト情報とスタック。自動的にスタックに保存されない。