Operating system 操作系统中的中断处理程序

Operating system 操作系统中的中断处理程序,operating-system,Operating System,用汇编语言至少编写一部分中断处理程序的原因是什么?通常,您必须在汇编语言中至少编写一部分中断例程。这是因为在很多情况下,中断只会导致处理器向某个特定的内存位置发送向量,并从该位置开始执行代码 由于您的处理器可能不遵守您正在使用的任何高级语言的调用约定,因此您需要编写一些汇编代码来解决这个问题,调用一些高级中断处理代码,然后再调用一些汇编代码来清除中断并使系统恢复正常执行。例如,在英特尔芯片上,您需要让处理器执行iret指令以从中断返回。在任何高级语言中,都无法以任何标准方式执行该操作。中断处理程

用汇编语言至少编写一部分中断处理程序的原因是什么?

通常,您必须在汇编语言中至少编写一部分中断例程。这是因为在很多情况下,中断只会导致处理器向某个特定的内存位置发送向量,并从该位置开始执行代码


由于您的处理器可能不遵守您正在使用的任何高级语言的调用约定,因此您需要编写一些汇编代码来解决这个问题,调用一些高级中断处理代码,然后再调用一些汇编代码来清除中断并使系统恢复正常执行。例如,在英特尔芯片上,您需要让处理器执行
iret
指令以从中断返回。在任何高级语言中,都无法以任何标准方式执行该操作。

中断处理程序总是在非常低级的环境中开始执行。但是汇编语言总是需要系统库和一些叫做“运行时”的东西

例如,在汇编语言之外操作堆栈指针寄存器并不容易

此外,ABI也是一个障碍。应用程序二进制接口在中断处理方面过于复杂,尤其是在上下文保存和恢复方面