我在Linux中使用汇编语言编写了一个简单程序(使用nasm),出于教育目的,我想使用BIOS中断代替linux系统调用,这可能吗?
最佳答案
简短的答案是,不行。
更长的答案是Linux支持virtual8086模式(int vm86(unsigned long fn, struct vm86plus_struct *v86)
调用),该模式能够执行实模式代码(包括BIOS功能,如果设置正确)。然而; BIOS期望许多不同的硬件处于特定/默认状态,Linux(像所有好的OS一样)控制硬件并将其置于BIOS可能无法期望的各种状态。因此,可能可以调用BIOS函数,但是您可以期望它们崩溃,导致未知行为和/或破坏Linux native 设备驱动程序的正常运行。
还要注意,BIOS功能无论如何都“次于” Linux的 native 设备驱动程序(换句话说,如果它确实起作用,那么您仍然不应该这样做)。现在许多系统都使用UEFI(在这种情况下根本不存在BIOS功能)。
关于assembly - 可以在Linux上的代码中使用BIOS中断吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338332/