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