以彙編語言編寫至少一部分中斷處理程序的原因是什麼?操作系統中的中斷處理程序
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