++
rintf(“不可达指令语句号=%d,”,B[p]); }Pringf(“\n”);}3、算法验证 下面以一个简单的汇编源程序来验证算法。1)根据判定算法,首先把源程度块的所有语句序列号存入数组AA={1,2,3,4,5,6,7,8,9,10,11,12}2)把X=12(大于0的数)时所执行的语句序列号存入数组A1A1={1,2,3,4,5,6,7,10,11,12}3)把X=-3(小于0的数)时所执行的语句序列号存入数组A2A2={1,2,3,4,9,10,11,12}4)把X=0(等于0的数)时所执行的语句序列号存入数组A3A3={1,2,3,4,5,10,11,12}5)分别求出A1、A2、A3的补集B1,B2,B3B1= ={8,9},B2= ={5,6,7,8}, B3= ={6,7,8,9}6)求出B1,B2,B3的交集BB=B1ΛB2ΛB3={8} 因此可以断定语句8为不可达指令,从源程序块中删除后并不影响程序的正确性。4、算法复杂度分析 此种算法源于程序块内,程序结构全部为顺序结构和简单分支结构,因此遍历过程算法复杂度均为O(n),判定交集算法复杂度为O(n2)。因为此算法只是进行两种运算,因此算法综合复杂度为O(n2)。5、结论 本文讨论了一种判定汇编语言程序不可达指令的算法,并通过一个示例程序说明了算法的实现并验证了其正确性。本文的工作为覆盖测试更全面、更有效的进行做了必要的补充,下一步需要做的是研究高效的覆盖测试算法,以提高测试的覆盖率。 | 欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |