【发布时间】:2011-06-12 21:31:05
【问题描述】:
我知道 Linux 提供 int 0x80 用于陷入系统调用,但还有其他方法吗?它们的用途是什么?
【问题讨论】:
-
观看者,在哪个平台上?而这与 C#、C++、C 或 gcc 有什么关系?
标签: x86 int intel system-calls
我知道 Linux 提供 int 0x80 用于陷入系统调用,但还有其他方法吗?它们的用途是什么?
【问题讨论】:
标签: x86 int intel system-calls
这是一个相当广泛的问题,但是是的,x86 芯片允许各种软件中断。
Linux 使用int 0x80 作为其系统调用机制,但您应该注意,更高版本的内核可以使用SYSENTER 而不是int 0x80,因为它在某些情况下效率更高。
在实模式下,中断向量表位于内存中的特定位置。如果您想详细了解可以执行的操作,请在 Google 上搜索“Ralf Brown”,他维护着近乎传奇的“中断列表”。
对于保护模式,可以使用特殊的处理器寄存器 IDTR 找到它(IDT 是中断描述符表)。
在这两种情况下,您都可以使用 256 次中断。
【讨论】: