【发布时间】:2017-12-07 10:09:12
【问题描述】:
在教科书Linux Kernel Development by Robert Love中提到(第101页):
返回值也通过寄存器发送到用户空间。在 x86 上,它 写入eax寄存器。
在教科书The Linux Programming Interface by Michael Kerrisk中提到(第88页):
由于所有系统调用都以相同的方式进入内核,内核 需要一些识别系统调用的方法。为了允许这一点, 包装函数将系统调用号复制到特定的 CPU 注册 (%eax)。
那么,EAX寄存器在系统调用中的作用,我能得出什么结论呢?
当内核遇到系统调用时,它会将系统调用号复制到 EAX 寄存器中,该寄存器中的值在系统调用返回时被系统调用的返回值替换。这个结论正确吗?
【问题讨论】:
标签: linux linux-kernel