可以在Linux的代码中使用BIOS中断吗?

4 assembly interrupt bios nasm system-calls

我在Linux中使用汇编语言编写了一个简单程序(使用nasm),出于教育目的,我想使用BIOS中断代替linux系统调用,这可能吗?

Bre*_*dan 5

简短的答案是,不行。

更长的答案是Linux支持virtual8086模式(int vm86(unsigned long fn, struct vm86plus_struct *v86)调用),该模式能够执行实模式代码(包括BIOS功能,如果设置正确的话)。然而; BIOS期望许多不同的硬件处于特定/默认状态,Linux(像所有好的OS一样)控制硬件并将其置于BIOS可能无法期望的各种状态。因此,可能可以调用BIOS函数,但是您可以期望它们崩溃,引起未知行为和/或破坏Linux本机设备驱动程序的正常功能。

还要注意,BIOS功能无论如何都“次于” Linux的本机设备驱动程序(换句话说,如果它确实起作用,您仍然不应该这样做)。现在许多系统都使用UEFI(在这种情况下根本不存在BIOS功能)。