setjmp,longjmpの罠
最近、setjmp,longjmpをいじっていて、
その仕様の罠にはまったので、掲載。
マイクロスレッドを知っている方なら、
割と理解しやすいトピックですが、
マイクロスレッドを実装する時に、独自にスタックを管理しないと
setjmp、longjmpだけでは、スタックポインタが保証されず、
うまくいかない。つまりアセンブラを用いて、スタックポインタを
保存する機構をつくらないといけないわけで。
ここが非常にわかりやすい。
http://www.jah.ne.jp/~naoyuki/Writings/VScheme3.html
ユーザースタックを作って,スタックポインタに切り替えるという
手段を用いれば結局できてしまうんですがね。
ちなみにユーザースタックは、ヒープに取ればよい。