以汇编语言编写至少一部分中断处理程序的原因是什么?操作系统中的中断处理程序
3
A
回答
1
通常你有写在汇编中的中断程序的至少一部分。这是因为在很多情况下,中断只是简单地使处理器向量到某个特定的内存位置,然后从那一点开始执行代码。因为你的处理器可能不遵守你使用的任何更高级的lanugage的调用约定,所以你需要编写一些汇编代码来修复它,调用一些更高级别的中断处理代码,然后一些更多汇编代码来清除中断并使系统恢复正常执行。例如,在Intel芯片上,您需要使处理器执行iret
指令才能从中断返回。用任何高级语言以任何标准方式都无法做到这一点。
2
中断处理程序始终在非常低的级别环境中开始执行。编程语言,但汇编总是需要系统库和一些称为“运行时”的东西。
例如,在汇编语言之外操作堆栈指针寄存器并不容易。
另外,ABI也是一个障碍。应用程序二进制接口在中断处理中过于复杂,特别是在上下文保存和恢复方面。
相关问题
- 1. 操作系统中断
- 2. 如何在python程序中处理操作系统信号?
- 3. i7处理器与Windows8操作系统的多线程问题操作系统
- 4. Linux操作系统:系统()+ SIGCHLD处理多线程+
- 5. 使用Java的操作系统事件处理程序
- 6. 操作系统中断并正在运行程序。
- 7. 操作系统如何处理需要多个操作的应用程序
- 8. 操作系统API使用中断吗?
- 9. 操作系统调用中断吗?
- 10. 中断系统调用处理队列
- 11. 实时操作系统调度程序处理
- 12. 单程序操作系统
- 13. 文件I/O操作系统处理
- 14. 如何处理中断的AndroidHttpClient操作
- 15. 操作系统中
- 16. 在中断处理程序
- 17. 在hg repo中处理操作系统特定的.classpath文件
- 18. 确定C#中的操作系统和处理器类型
- 19. 实时操作系统可以处理的进程数量
- 20. 处理中断的程序,即中断处理程序存储在哪里?
- 21. 未处理Android处理程序操作
- 22. 系统调用是否在整个软件中断处理程序中执行?
- 23. 操作系统中的后台进程
- 24. Java中的操作系统
- 25. 操作系统中的fork()
- 26. 硒代理操作系统
- 27. 在Windows操作系统中的pathos软件包操作系统
- 28. 如何确定预处理器中的操作系统和操作系统版本?
- 29. 多处理器和多线程 - 操作系统
- 30. 操作系统中的加载程序如何工作?
嘿感谢您的快速回复。自上午以来我一直在努力寻找答案。 – user1165418 2012-02-26 05:30:25