用汇编语言编写至少一部分中断处理程序的原因是什么?
答案 0 :(得分:2)
中断处理程序始终在非常低级别的环境中开始执行。编程语言,但汇编总是需要系统库和称为“运行时”的东西。
例如,在汇编语言之外操作堆栈指针寄存器并不容易。
此外,ABI也是一个障碍。应用程序二进制接口在中断处理中过于复杂,特别是对于上下文保存和恢复。
答案 1 :(得分:1)
通常你有在汇编中写入至少部分中断例程。那是因为在很多情况下,中断只会导致处理器向某个特定的内存位置移动并从那一点开始执行代码。
由于您的处理器可能不遵守您正在使用的任何更高级别语言的调用约定,因此您需要编写一些汇编代码来修复它,调用一些更高级别的中断处理代码,然后再处理更多汇编代码清除中断并使系统恢复正常执行。例如,在Intel芯片上,您需要让处理器执行iret
指令以从中断返回。任何高级语言都无法以任何标准方式执行此操作。