我们在汇编编程中只用80H来请求一个linux内核的服务吗?
其他中断号码在Linux中的效用是什么?
我正在从Windows过渡到Linux。
int3
(调试断点)和int 80h
(旧系统调用)是linux上常用的两个软件中断。 设备驱动程序使用硬件中断,但这些中断可能不关心你。
也就是说,在32位系统上,内核提供了映射到每个进程的代码,可以调用这些代码来执行系统调用,并且会自动使用最合适的机制( syscall
, sysenter
或int 80h
)。 由于所有64位系统都支持syscall
指令,所以这是长时间模式下通常使用的指令。 请注意,64位系统呼叫号码与32位不同。
最后,你通常不使用Linux上的汇编程序进行系统调用。 你要么使用C库,要么完全避免系统调用,因为它们很慢,而且组装的主要用途之一就是速度。 当然也有例外,例如安全相关代码或编译器/语言开发。