x86 的 SYSCALL 和 SYSRET 仍然会产生软件中断吗?

问题描述

我无法理解在 x86 中发生系统调用时是否仍会生成软件中断。例如,我曾认为处理器在生成系统调用时向自身发送一个中断(特别是软件中断)。那么这将需要在执行特定的 SYSCALL/SYSRET 指令之前执行设置 SS 和 CS 的所有工作。我知道想知道是否真的是这样。我正在使用 gem5,我注意到似乎没有生成软件中断的拦截点。但相反,似乎 SYSCALL/SYSRET 指令是直接执行的,而没有产生中断(我一直在使用调试标志来查看在我自己的应用程序中执行系统调用时是否生成了任何内容)。那么,在 x86 中首次“识别”系统调用和内核接管并执行实际系统调用之间,新的 SYSCALL/SYSRET 指令是否存在拦截点?我原以为 x86 会捕获向量号(以在 IVT 中查找)并将系统调用号存储在内核知道应该保存系统调用号的寄存器中。任何澄清将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)