为什么getcontext和setjmp在glibc-x86-64中保存不同的寄存器



以下是它们的源代码:https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=sysdeps/unix/sysv/linux/x86_64/getcontext.S;hb=HEADhttps://sourceware.org/git/?p=glibc.git;a=blob_plain;f=sysdeps/x86_64/setjmp.S;hb=HEAD

如您所见,getcontext 还保存浮点上下文并注册 setjmp 没有的 r8 和 r9。这是什么原因呢?

似乎这两个例程都是错误的。Setjmp 不应忽略浮点状态,getcontext 不应保存 r8,r9。

参考:

http://www.boost.org/doc/libs/1_57_0/libs/context/doc/html/context/rationale/x86_and_floating_point_env.html

相关内容

  • 没有找到相关文章

最新更新