【发布时间】:2011-07-31 16:58:01
【问题描述】:
我知道setjmp和longjmp的定义。 setjmp 将环境存储在堆栈上下文中,另一个用于恢复。
但我认为我在某些地方缺乏理解。有人可以借助好的示例向我解释我如何保证,如何保存以及如何恢复?
我看到 jmp_buf 中指向了很多 CPU 寄存器。但是我如何保证它被恢复了呢?
请用简洁的例子帮助我解释。我用谷歌搜索并提到了其他有关堆栈溢出的问题,但没有一个给出明确的例子。
提前非常感谢。
P.S:它应该只来自 Linux/Unix 上下文。
【问题讨论】:
-
你读过en.wikipedia.org/wiki/Setjmp.h 吗?编译示例并使用
objdump查看寄存器发生了什么