2

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

如您所见,getcontext 还保存了浮点上下文和寄存器 r8 和 r9,而 setjmp 没有。这是什么原因?

4

1 回答 1

1

似乎这两个例程都是错误的。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

于 2014-11-22T23:20:36.540 回答