軟件抗干擾經(jīng)驗(yàn)之一
當(dāng)CPU受到外界干擾,有時(shí)PC指針會(huì)飛到另一段程序中,或跳到空白段去。
其實(shí),如果PC指針飛到空白段去,倒也好處理。只要在空白段設(shè)立軟件陷阱(攔截指令),將程序攔截到初始化段或程序錯(cuò)誤處理段。
但是,如果PC指針飛到另一段程序中去了,系統(tǒng)如何辦?小匠在這里推薦一種方法——程序口令,思路如下:
1、首先,程序必須模塊化。每個(gè)模塊(子程序)執(zhí)行一個(gè)功能。每個(gè)模塊只有一個(gè)出口(RET)。
2、設(shè)立一個(gè)模塊(子程序)ID寄存器。
3、為每個(gè)子程序配置一個(gè)唯一的ID號碼。
4、每當(dāng)子程序執(zhí)行完畢,要返回(RET)之前,先將本子程序的ID號送入 ID寄存器
5、返回到上級程序后,先判斷ID寄存器中的ID號。如果正確,則繼續(xù)執(zhí)行;如果不正確,則表示PC指針有可能已經(jīng)跳錯(cuò)了,子程序沒有按預(yù)計(jì)的出口返回,這時(shí)將程序攔截到初始化段或程序錯(cuò)誤處理段。
這種方法,如同在程序中設(shè)立了若干個(gè)崗哨,每次調(diào)用子程序返回后,都要對口令(ID號),驗(yàn)明正身后再放行。再配合軟件陷阱,基本上可以將大多數(shù)PC指針彈飛的現(xiàn)象檢測到。
到了程序錯(cuò)誤處理段,要?dú)⒁獎(jiǎng)帲ɡ鋯?dòng)還是熱啟動(dòng))就由您了。
評論