?? 關于函數重入的說明.txt
字號:
關于函數重入的說明
因為使用了中斷等級劃分,中斷中調用函數必定使用using x,保證主循環、低等級中斷、高等級中斷對同一函數的調用,不使用相同的寄存器區,而同等級中不管優先級如何都不會發生中斷嵌套,所以首先避免了使用寄存器做函數參數調用引起的重入問題。
對只要可能在中斷中調用的任何函數,必須使用#pragma NOAREGS開關,避免編譯器產生優化的地址直接尋址指令,而使用正確的寄存器尋址指令。
對可能中斷中調用的指針,一定明確說明類型,不能使用通用指針。
對可能被嵌套的函數,在進行char以上(int、long、xdata指針等)超過兩字節的變量操作時,必須進行中斷保護:保存中斷狀態->關中斷->操作->恢復中斷狀態,保證不會在兩字節之間的操作中產生中斷。
這樣reentrant可以不被使用,它的代價太大了。如果還有重入問題,就將函數復制一遍并改名,讓中斷中調用不同名字的函數吧。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -