Почему 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=HEAD https://sourceware.org/git/?p=glibc.git;а=blob_plain;F=с sysdeps/x86_64 с/команду setjmp.С;НВ=Глава

Как вы можете видеть, getcontext также сохраняет контекст с плавающей запятой и регистрирует r8 и r9, чего не делает setjmp. В чем причина этого?

1 2

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