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