受到这个问题的启发
How can I force GDB to disassemble?
与此相关
在 linux 下,一个实际的系统调用是如何发生的?在执行调用时会发生什么,直到调用实际的内核例程?
最佳答案
假设我们谈论的是 x86:
- ID of the system call存入EAX寄存器
- 系统调用所需的任何参数都存放在locations dictated by the system call中。 .例如,一些系统调用希望它们的参数驻留在 EBX 寄存器中。其他人可能希望他们的论点位于堆栈的顶部。
INT 0x80
中断被调用。- Linux 内核为由 EAX 寄存器中的 ID 标识的系统调用提供服务,并将所有结果存放在预先确定的位置。
- 调用代码使用任何结果。
我可能对此有点生疏,已经有几年了......
关于linux - 系统调用实际上是如何在 Linux 上发生的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1245817/