我知道所有的通用寄存器在中斷髮生時都被壓入堆棧,但是我看不到任何標誌寄存器的代碼被保存。如果標誌寄存器損壞,那麼依賴於標誌寄存器的像setl這樣的彙編指令容易在從中斷恢復時產生錯誤的結果。當發生中斷或進程調度發生時,是否需要保存標誌寄存器?
2
A
回答
3
是的,(e/r)flags
寄存器需要通過上下文切換保存。
所有中斷(硬件和軟件,包括異常)都會自動將其保存在堆棧中,ISR末尾的iret
指令會將其恢復。
系統調用使用相同或類似的機制並保存寄存器。
調度由中斷或系統調用觸發。所以,一切都被覆蓋了。
+0
你的意思是標誌寄存器被硬件本身壓入棧中,我們不需要做任何工作? – 2012-07-10 10:28:26
+0
是的,由硬件(CPU)。 – 2012-07-10 11:03:16
相關問題
- 1. 發生中斷時保存的進程狀態在哪裏?
- 2. 當保存位圖時發生GDI +異常時發生通用錯誤
- 3. 中斷髮生之前發生的中斷髮生之前發生的中斷
- 4. 從TXT文件閱讀 - 保存當斷行發生
- 5. 當javers模式發生變化時,我保存的記錄是?
- 6. 嘗試重新使用寄存器x86彙編時發生Segfault
- 7. tryCatch存儲標誌和存儲索引,其中發生錯誤
- 8. 生成調度源定時器事件時發生內存泄漏
- 9. firebase3存儲url是否隨時間或地點發生變化
- 10. 會發生什麼事時,在同一時間兩個進程都調用寄存器()
- 11. 當變量超過32個時,寄存器會發生什麼變化?
- 12. Python調試器是否在發生器中步進?
- 13. 條件碼/標誌是否存儲在處理器寄存器或主存儲器中?
- 14. 保存分段狀態時發生NotSerializableException
- 15. 組件保存時發生的事件
- 16. 保存照片時發生崩潰
- 17. 當發生錯誤時ob_start被中斷
- 18. 當NSFilemanager存儲NSMutableArray時發生崩潰
- 19. 當我點擊保存按鈕時,AsyncTask中發生錯誤?
- 20. 我是否需要同步確保發生的對象?
- 21. 當DropDownList發生變化時,需要Gridview進行更改
- 22. 斐波那契移位寄存器僞隨機數發生器
- 23. 當您使用內存覆蓋前綴但所有操作數都是寄存器時會發生什麼?
- 24. 主(UI)線程是否發生回調?
- 25. 當發生非向量中斷時,處理器是否查找向量表?
- 26. Git - 在保存時發生的變化(作爲difftool)未保存
- 27. 當堆棧和堆棧內存發生衝突時,程序是否終止?
- 28. 定時器發生內存泄漏
- 29. 從存儲過程調用觸發器(ROLLBACK觸發器會發生?)
- 30. 是生存進程終止
如果沒有發生,幾乎所有的代碼都會被破壞。 – harold 2012-07-10 10:06:10