壓力校驗(yàn)儀軟件的可維護(hù)性編程方法
壓力校驗(yàn)儀軟件代碼在執(zhí)行中容易出現(xiàn)的下一個(gè)問(wèn)題是跑飛,程序指針受到干擾,跳轉(zhuǎn)到了一個(gè)非受控位置,執(zhí)行了不該執(zhí)行的代碼。如果執(zhí)行了不該執(zhí)行的代碼,如果在程序中加入了足夠的變量判斷、讀值判斷、狀態(tài)檢測(cè)判斷等,那倒還好了,后果也不會(huì)太嚴(yán)重,甚至zui終還是可能自己跑回來(lái)的。但有一種跑飛是比較可怕的,一般我們?cè)赗OM中存放的程序目標(biāo)代碼是1-3字節(jié)的指令,就是zui多3條字段的目標(biāo)碼組成了執(zhí)行動(dòng)作,如果程序指針跑飛到了某個(gè)3字節(jié)指令的第2個(gè)字節(jié)上的時(shí)候,執(zhí)行的后果是什么,可就真的沒(méi)人知道了,即使在程序上作了足夠的數(shù)據(jù)判錯(cuò)、邏輯跳轉(zhuǎn)的防范措施,結(jié)果也不會(huì)好。而且ROM一般是不可能全部都被程序代碼填滿的,總有富余空間,富余空間中的默認(rèn)內(nèi)容是啥,這些默認(rèn)字節(jié)是否也會(huì)導(dǎo)致一些操作呢?跳到這些字段里,也是容易出麻煩的。
壓力校驗(yàn)儀軟件代碼跑飛如何解決呢?就是每隔一段程序代碼或控制區(qū)域,就人為放置上幾個(gè)NOP指令,在NOP指令后放置一個(gè)長(zhǎng)跳轉(zhuǎn)的ERR處理程序。注意NOPzui少放置3個(gè),這樣任何的跑飛zui多只能占用2個(gè)NOP,第三個(gè)NOP一樣還是能把程序代碼揪回來(lái),揪回來(lái)后就執(zhí)行ERR處理程序。