gpt4 book ai didi

x86-64 - 为什么 setjmp(3) 不保存 AMD64 上的所有寄存器?

转载 作者:行者123 更新时间:2023-12-04 12:23:35 26 4
gpt4 key购买 nike

我正在浏览各种setjmp的来源和 longjmp实现并注意到并非所有 CPU 寄存器都保存在 jmp_buf 中。结构体。查看 AMD64 ABI 后,我注意到只保存了被调用者保存的寄存器。

我不明白仅保存一些寄存器时如何完全恢复功能状态。当然,在我调用 longjmp 之前,未保存的寄存器肯定已经被多次破坏了。稍后的?

然而,一切都很完美,所以肯定有一些我不明白的地方。我希望有人可以对此有所了解。

谢谢!

最佳答案

setjmp function 是一个和其他任何函数一样的函数,因此可以假设它破坏了任何调用者保存的寄存器。因此,它不需要保存/恢复这些寄存器。

关于x86-64 - 为什么 setjmp(3) 不保存 AMD64 上的所有寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11285365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com