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