5

我们在汇编编程中是否只使用 80H 向 linux 内核请求服务?

linux中其他中断号的用处是什么?

我正在从 windows 过渡到 linux。

4

1 回答 1

2

int3(调试断点)和int 80h(旧系统调用)是linux上常用的两个软件中断。设备驱动程序使用硬件中断,但这些可能与您无关。

也就是说,在 32 位系统上,内核提供了映射到每个进程的代码,这些进程可以被调用来执行系统调用,并且它会自动使用最合适的机制(syscallsysenterint 80h。由于所有 64 位系统都支持该syscall指令,因此通常在长模式下使用该指令。请注意,64 位系统调用号与 32 位不同。

最后,您通常不会在 linux 上使用来自程序集的系统调用。您要么使用 c 库,要么完全避免系统调用,因为它们很慢,而汇编的主要用途之一是提高速度。当然也有例外,例如与安全相关的代码或编译器/语言开发。

于 2013-10-19T23:28:18.423 回答