Seasons.NET

ちょっとした技術ブログです

setjmp,longjmpの罠

最近、setjmp,longjmpをいじっていて、
その仕様の罠にはまったので、掲載。

マイクロスレッドを知っている方なら、
割と理解しやすいトピックですが、
マイクロスレッドを実装する時に、独自にスタックを管理しないと
setjmp、longjmpだけでは、スタックポインタが保証されず、
うまくいかない。つまりアセンブラを用いて、スタックポインタを
保存する機構をつくらないといけないわけで。

ここが非常にわかりやすい。
http://www.jah.ne.jp/~naoyuki/Writings/VScheme3.html

ユーザースタックを作って,スタックポインタに切り替えるという
手段を用いれば結局できてしまうんですがね。
ちなみにユーザースタックは、ヒープに取ればよい。