发明名称 一种污染变量跟踪方法
摘要 本发明公开了一种污染变量跟踪方法,涉及设备驱动领域。所述方法包括:A:找到第一污染变量,存入结果图中,B:将其所在的函数存入待处理函数队列;C:取出一个待处理函数,判断其中是否存在新的第二污染变量,如果是,将新的第二污染变量和相应的赋值关系存入结果图,并将待处理函数放回,执行步骤D;否则,直接执行步骤D;D:判断是否存在新的第三污染变量,如果是,将新的第三污染变量和相应的赋值关系存入结果图中,并将相应的函数放入待处理函数队列中,执行步骤E;否则,直接执行步骤E;E:判断待处理函数队列是否为空,如果是,输出结果图;否则,执行步骤C。所述方法可以提高设备驱动和硬件设备的可靠性。
申请公布号 CN102567183B 申请公布日期 2014.10.22
申请号 CN201110407515.X 申请日期 2011.12.08
申请人 清华大学 发明人 王瑀屏;胡事民;马超;阎栋
分类号 G06F11/34(2006.01)I 主分类号 G06F11/34(2006.01)I
代理机构 北京路浩知识产权代理有限公司 11002 代理人 王莹
主权项 一种污染变量跟踪方法,其特征在于,包括步骤:A:将直接读取目标设备寄存器数据的函数作为污染函数存储到污染函数库中,根据目标设备驱动源代码建立变量赋值关系图、函数调用关系图和函数被调用关系图,创建用于存放污染变量及相应赋值关系的结果图和用于存放待处理函数的待处理函数队列;B:根据所述污染函数库,找到直接被所述污染函数赋值的第一污染变量,将所述第一污染变量存入所述结果图中,将所述第一污染变量所在的函数存入所述待处理函数队列;C:从所述待处理函数队列中取出一个待处理函数,根据所述结果图中已有的污染变量和所述变量赋值关系图,判断所述待处理函数中是否存在新的第二污染变量,如果存在,将所述新的第二污染变量和相应的赋值关系存入所述结果图中,并将所述待处理函数重新放回所述待处理函数队列,然后执行步骤D;否则,直接执行步骤D;D:根据所述结果图中已有的污染变量、所述函数调用关系图和函数被调用关系图,判断是否存在由于函数调用或者被调用而产生的新的第三污染变量,如果存在,将所述新的第三污染变量和相应的赋值关系存入所述结果图中,并将发现所述新的第三污染变量的函数放入所述待处理函数队列中,然后执行步骤E;否则,直接执行步骤E;所述步骤D具体包括步骤:D1:根据所述结果图中已有的污染变量和所述函数调用关系图,判断是否存在第一实参变量被属于已有的污染变量的第一形参变量所污染,如果存在,将所述第一实参变量和相应的赋值关系存入所述结果图中,并将发现所述第一实参变量的函数放入所述待处理函数队列中,然后执行步骤D2;否则,直接执行步骤D2;D2:根据所述结果图中已有的污染变量和所述函数被调用关系图,判断是否存在第二形参变量被属于已有的污染变量的第二实参变量所污染,如果存在,将所述第二形参变量和相应的赋值关系存入所述结果图中,并将发现所述第二形参变量的函数放入所述待处理函数队列中,然后执行步骤E;否则,直接执行步骤E;E:判断所述待处理函数队列是否为空队列,如果是,输出所述结果图;否则,执行所述步骤C。
地址 100084 北京市海淀区清华园北京100084-82信箱