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