我程序一直都是裸體的,在裸體中發現了幾個問題:
(1)WARNINGL15:MULTIPLECALLTOSEGMENT--函數重入
其實這個問題實際上就是函數重入問題,在操作系統的多線程很常見。例如在主循環里調用了一個函數,而在中斷服務中,你又一次調用了同樣的函數。這樣當主循環運行到該函數中時,一旦產生中斷,則在中斷里又再次調用該函數!而使得該子函數發生了重入,這時,盡管概率很低,但是很可能出錯!
(2):當主函數與中斷函數共享變量問題(類似兩個線程共享資源的問題)
當主函數與中斷函數共用變量時,可能發生:
例如:當變量的其中一個字節讀入到
寄存器中時,發生中斷,中斷中改寫了變量值。當中斷返回時,變量的其他字節繼續被讀入到寄存器中,造成新舊字節組合錯誤。
這些問題感覺都很隱蔽,如果出現了,可能只能通過反匯編才能看到。個人感覺要有操作系統的思想,理解和避免這些問題就容易些了。
網友評論:不過樓主既然說是“裸奔”,版主就不宜給人穿“酷”子啦!呵呵
網友評論:其實就是簡單的裸奔系統,都應該加入操作系統的思想。
網友評論:學習啦
網友評論:嗯