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

标签 assembly nasm interrupt system-calls bios

我在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/

相关文章:

c - 你怎么能告诉计算机它正在添加而没有 addl 在程序集中

assembly - ARM中的CMP和TST指令有什么区别?

c++ - C++ 编译器是否识别 2 的幂?

assembly - 68k 汇编中的基本 for 循环?

c - 调用 glibc 时的 x86-64 ELF 初始堆栈布局

c - 如何在嵌入式 Linux 中检测 GPIO 线上的中断?

assembly - 如何通过JMP在MBR中重定位代码?

assembly - "times 510-($-$$) db 0"不起作用

c - 我怎样才能从 main while 循环(C 编程)中逃脱?

algorithm - 如何停止进程并开始其他进程而不返回到 Arduino 中的初始进程