如何在 C 中编写软件中断?我知道需要编写一个中断服务例程然后中断 CPU 以便可以调用该例程,但我不知道如何在 C 中执行此操作。另外,我不知道如何使用中断描述符注册该例程 table 。 我有一个 x86-64 CPU (AMD Turion64 X2),我正在使用 gcc 编译器。 任何帮助将不胜感激。
最佳答案
中断的概念不包含在 C 规范中(并且在某种程度上也是特定于处理器的)。大多数编译器,包括 GCC,都允许您编写内联汇编代码(或者您当然可以将用汇编编写的文件链接到您的程序)。但最大的问题是常见的操作系统(尤其是那些以 64 位模式运行的操作系统)不会让您更改中断表。我猜你最好的选择是寻找一个简单的开源操作系统,然后从普通程序安装你的中断处理程序(如果操作系统允许的话)或者将你的代码添加到内核中。您不能只在处理器模拟器(或虚拟机)中运行一小段代码的原因是处理器需要相当多的设置才能进入 64 位模式。有关如何更改中断表的具体细节取决于该设置。
关于c - 软件中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482318/