c - 软件中断

标签 c interrupt

如何在 C 中编写软件中断?我知道需要编写一个中断服务例程然后中断 CPU 以便可以调用该例程,但我不知道如何在 C 中执行此操作。另外,我不知道如何使用中断描述符注册该例程 table 。 我有一个 x86-64 CPU (AMD Turion64 X2),我正在使用 gcc 编译器。 任何帮助将不胜感激。

最佳答案

中断的概念不包含在 C 规范中(并且在某种程度上也是特定于处理器的)。大多数编译器,包括 GCC,都允许您编写内联汇编代码(或者您当然可以将用汇编编写的文件链接到您的程序)。但最大的问题是常见的操作系统(尤其是那些以 64 位模式运行的操作系统)不会让您更改中断表。我猜你最好的选择是寻找一个简单的开源操作系统,然后从普通程序安装你的中断处理程序(如果操作系统允许的话)或者将你的代码添加到内核中。您不能只在处理器模拟器(或虚拟机)中运行一小段代码的原因是处理器需要相当多的设置才能进入 64 位模式。有关如何更改中断表的具体细节取决于该设置。

关于c - 软件中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482318/

相关文章:

c - Ncurses:刷新非重叠窗口会刷新整个屏幕。如何避免这种情况?

c - 这可能使用 typedef 枚举的成员吗?

c - libusb-1.0 通用 USB 设备的写权限

operating-system - 操作系统如何选择中断处理程序?

multithreading - 中断技术如何帮助实现多线程?

c - 带分隔符的文件中的 fgets 和 sscanf 记录

c - 如何在 C 中使用前向声明?

python - Python 中的实时中断

c - ATMega 随机数生成

c++ - 中断可以这样编程吗?