CN109002684B - 一种区间信息分析方法 - Google Patents

一种区间信息分析方法 Download PDF

Info

Publication number
CN109002684B
CN109002684B CN201810634685.3A CN201810634685A CN109002684B CN 109002684 B CN109002684 B CN 109002684B CN 201810634685 A CN201810634685 A CN 201810634685A CN 109002684 B CN109002684 B CN 109002684B
Authority
CN
China
Prior art keywords
node
interval information
flowing
predecessor
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810634685.3A
Other languages
English (en)
Other versions
CN109002684A (zh
Inventor
马森
张世琨
邵思豪
高庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peking University
Original Assignee
Peking University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peking University filed Critical Peking University
Priority to CN201810634685.3A priority Critical patent/CN109002684B/zh
Publication of CN109002684A publication Critical patent/CN109002684A/zh
Application granted granted Critical
Publication of CN109002684B publication Critical patent/CN109002684B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Machine Translation (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种区间信息分析方法,包括:S1,对于值依赖图中任一结点,根据该结点的任一前驱结点的区间信息和该结点与该前驱结点间的守卫条件,获取该前驱结点流入该结点的区间信息;S2,根据该结点的每一前驱结点流入该结点的区间信息和该结点的类型,获取该结点的区间信息。本发明提供的方法,应用递归的方法,基于前驱结点的区间信息和守卫条件,实现了值依赖图中任一结点区间信息的获取,提高了值依赖图的分析效率和分析进度。

Description

一种区间信息分析方法
技术领域
本发明涉及值依赖图技术领域,尤其涉及一种区间信息分析方法。
背景技术
值依赖图(Value Dependence Graph)是一种有向图,可表示为VDG=(N,N_s,E,E_i)。其中,N为结点集,每个结点对应程序中的一条语句,N_s为选择语句结点集,
Figure BDA0001701141360000011
包含分支选择语句以及循环选择语句,边集E={<n1,ns1,…,nsi,n2>|n1,n2∈N,ns1,nsi∈N_s,n1为n2在值依赖源点,ns为可选结点即n1可以直接到达n2}。上述值依赖图是对流值图的一种扩展。
值依赖图本身是通过定值使用分析和数据流分析等构造的反应变量之间守卫条件的图,所有可能影响当前结点值域范围的结点都是当前结点的前驱结点,并且每个前驱结点到当前结点都有相应的逻辑条件进行约束。
然而,如何基于值依赖图中反应变量间的守卫条件,获知任一结点的区间信息,依然是值依赖图领域亟待解决的问题。
发明内容
本发明为解决现有技术中存在的问题,提供了一种区间信息分析方法。
一方面,本发明提出一种区间信息分析方法,包括:S1,对于值依赖图中任一结点,根据该结点的任一前驱结点的区间信息和该结点与该前驱结点间的守卫条件,获取该前驱结点流入该结点的区间信息;S2,根据该结点的每一前驱结点流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
优选地,所述步骤S1进一步包括:根据下式获取该结点的任一前驱结点流入该结点的区间信息:
predsMap[i](vnode)=outMap[i]∩guardMap[i]
式中,predsMap[i](vnode)为该结点的第i个前驱结点流入该结点的区间信息,outMap[i]为该结点的第i个前驱结点的区间信息,guardMap[i]为该结点与该结点的第i个前驱结点间的守卫条件的区间信息。
优选地,所述步骤S2进一步包括:S21,根据下式获取流入该结点的区间信息:
Figure BDA0001701141360000021
式中,inMap(vnode)为流入该结点的区间信息,predsMap[i]为该结点的第i个前驱结点流入该结点的区间信息;S22,根据所述流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
优选地,所述步骤S22进一步包括:若所述流入该结点的区间信息为空集,则该结点的区间信息为空集;否则,若该结点的前驱结点中包括该结点,则根据所述流入该结点的区间信息和该结点的类型,获取该结点循环前信息,基于所述循环前信息和自循环的守卫条件获取该结点的区间信息;若该结点的前驱结点不包括该结点,则基于所述流入该结点的区间信息和该结点的类型获取该结点的区间信息。
优选地,该结点的类型为赋值结点、函数调用结点、函数入口结点、条件判断结点或返回语句结点。
优选地,若该结点为赋值结点,则根据所述流入该结点的区间信息模拟计算,获取该结点的区间信息;若该结点为函数调用结点,则根据所述流入该结点的区间信息获取该结点中的函数调用的参数的区间信息,将所述参数的区间信息作为该结点的区间信息;若该结点为函数入口结点,且函数调用为变量,则从所述流入该结点的区间信息中提取所述变量的区间信息,并将所述变量的区间信息作为该结点的区间信息;若该结点为函数入口结点,且函数调用为常量,则将该常量的区间信息作为该结点的区间信息;若该结点为条件判断结点或返回语句结点,则该结点的区间信息为所述流入该结点的区间信息。
优选地,任一结点的区间信息如下式所示:
outMap={<var,isLeft,VRI>}
式中,outMap为结点的区间信息,var为变量,isLeft为true或false,true和false分别用于表示变量var位于所述结点对应的语句中等号的左边和右边,VRI为变量var对应的值域信息。
优选地,所述流入该结点的区间信息如下式所示:
inMap={<var,VRI>}
式中,inMap为流入该结点的区间信息,var为变量,VRI为变量var对应的值域信息。
另一方面,本发明提出一种区间信息分析设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如前所述的方法。
再一方面,本发明提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如前所述的方法。
本发明提供的一种区间信息分析方法,应用递归的方法,基于前驱结点的区间信息和守卫条件,实现了值依赖图中任一结点区间信息的获取,提高了值依赖图的分析效率和分析进度。
附图说明
图1为本发明具体实施例的一种区间信息分析方法的流程示意图;
图2为本发明具体实施例的值依赖图中结点存在形式示意图;
图3为本发明具体实施例的一种值依赖图;
图4为本发明具体实施例的一种单变量循环的值依赖图;
图5为本发明具体实施例的一种区间信息分析设备的结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1为本发明具体实施例的一种区间信息分析方法的流程示意图,如图1所示,一种区间信息分析方法,包括:S1,对于值依赖图中任一结点,根据该结点的任一前驱结点的区间信息和该结点与该前驱结点间的守卫条件,获取该前驱结点流入该结点的区间信息;S2,根据该结点的每一前驱结点流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
具体地,图2为本发明具体实施例的值依赖图中结点存在形式示意图,如图2所示,值依赖图中,任一结点与其前驱结点之间存在依赖关系(dependence),守卫条件(guard)为所述依赖关系的属性,所述守卫条件,包括了该结点与其前驱结点间所含的变量从定义到使用的关系、数组从定义到其数组元素使用的关系等。所述前驱结点的值依赖信息能够传递到该结点的条件即所述守卫条件得到满足。根据前驱结点的区间信息获取该结点的区间信息,具体步骤如下:
首先,对于值依赖图中的任一结点,获取该结点的前驱结点集合,从所述前驱结点集合中任意选取一个前驱结点,获取该前驱结点的区间信息以及该结点与该前驱结点间的守卫关系。
其次,根据该前驱结点的区间信息和该结点与该前驱结点间的守卫关系,获取该前驱结点流入该结点的区间信息。
随后,根据上述方法获取该结点的每一前驱结点流入该结点的区间信息。
最后,根据每一前驱结点流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
本发明具体实施例中,应用递归的方法,基于前驱结点的区间信息和守卫条件,实现了值依赖图中任一结点区间信息的获取,提高了值依赖图的分析效率和分析进度。
基于上述具体实施例,一种区间信息分析方法,所述步骤S1进一步包括:根据下式获取该结点的任一前驱结点流入该结点的区间信息:
predsMap[i](vnode)=outMap[i]∩guardMap[i]
式中,predsMap[i](vnode)为该结点的第i个前驱结点流入该结点的区间信息,outMap[i]为该结点的第i个前驱结点的区间信息,guardMap[i]为该结点与该结点的第i个前驱结点间的守卫条件的区间信息。
具体地,获取任一前驱结点的区间信息以及该结点与该前驱结点间的守卫关系的区间信息,取上述两个区间信息的交集,将所述交集作为该前驱结点流入该结点的区间信息。
例如,C语言中,获取任一前驱结点流入该结点的区间信息的程序getIntervalOfPreNode如下:
Figure BDA0001701141360000051
Figure BDA0001701141360000061
上述程序中,函数getIntervalOfLoopPreNode(outMap,guard)和getIntervalOfNormalPreNode(outMap,guard)算法的流程相似,均是先求解守卫条件的区间信息guardMap,在应用guardMap与前驱结点的区间信息outMap进行交运算获取最终的结果。两者不同的是,函数getIntervalOfLoopPreNode是针对常规的不存在循环内跳转到循环外的情况下outMap∩guardMap的求解,而getIntervalOfNormalPreNode则是针对循环内跳转到循环外的情况下outMap∩guardMap的求解。
本发明具体实施例中,通过取交集获取了任一前驱结点流向当前结点的区间信息,为获取当前结点的区间信息提供了条件。
基于上述任一具体实施例,一种区间信息分析方法,所述步骤S2进一步包括:S21,根据下式获取流入该结点的区间信息:
Figure BDA0001701141360000071
式中,inMap(vnode)为流入该结点的区间信息,predsMap[i]为该结点的第i个前驱结点流入该结点的区间信息;S22,根据所述流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
具体地,首先,在获取了该结点的每一前驱结点流入该结点的区间信息后,将每一前驱结点流入该结点的区间信息的并集作为流入该结点的区间信息。
随后,根据所述流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
例如,C语言中,流入任一结点的区间信息inMap(vnode)的获取程序如下:
1.For each pred∈preds do//遍历前驱结点集合preds,获取各结点pred2.Ifpred==this then//如果pred和当前结点相同,说明pred存在自循环,在这一环节不予考虑。
3.Continue
4.End
5.tmp←getIntervalOfPreNode(pre)/获取前驱结点pre的区间信息tmp
6.For each var∈tmp.keySet()//实现上述公式中汇总每个前驱结点流向当前结点区间信息的过程,即取前驱结点区间信息与守卫条件区间信息的交集的过程。再如果当前inMap中的区间信息original非空,则把rs和original取并集后的结果作为inMap的var对应的区间信息。
7.rs←tmp.get(var)//对于每一个tmp中涉及到的变量var,取出tmp中的var的区间信息rs。
8.original←inMap.get(var)//取出inMap中的var的区间信息original。
9.If original!=null then//如果当前结点的区间信息为空,把rs作为inMap的var的区间信息。
10.rs←union(rs,original)
11.End
12.inMap.put(var,rs)
13.End
14.End
上述程序中,函数getIntervalOfPreNode用于实现outMap[i]∩guardMap[i],即获取当前结点的第i个前驱结点流向当前结点的区间信息predsMap[i]。
本发明具体实施例中,通过取并集获取了所有前驱结点流向当前结点的区间信息,为获取当前结点的区间信息提供了条件。
基于上述任一具体实施例,一种区间信息分析方法,所述步骤S22进一步包括:若所述流入该结点的区间信息为空集,则该结点的区间信息为空集;否则,若该结点的前驱结点中包括该结点,则根据所述流入该结点的区间信息和该结点的类型,获取该结点循环前信息,基于所述循环前信息和自循环的守卫条件获取该结点的区间信息;若该结点的前驱结点不包括该结点,则基于所述流入该结点的区间信息和该结点的类型获取该结点的区间信息。
具体地,通过流入该结点的区间信息获取该结点的区间信息,进一步包括:
首先,判断所述流入该结点的区间信息是否为空:
若所述流入该结点的区间信息为空,则说明没有变量的区间信息流入该结点,即该结点不可达,将该结点的区间信息设置为空;
若所述流入该结点的区间信息不为空,则进一步判断该结点的前驱结点中是否包含该结点,即该结点是否存在自循环:
若该结点的前驱结点中包含该结点,即该结点存在自循环,则将该结点和自循环的守卫条件作为一个模块,首先根据所述流入该结点的区间信息和该结点的类型,获取该结点的循环前信息,随后基于该结点的循环前信息,在所述模块内部运行该结点及其自循环的守卫条件,将该结点的运行结果作为其区间信息;
若该结点的前驱结点中不包含该结点,即该结点不存在自循环,则根据流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
例如,在C语言中,应用如下代码获取结点的区间信息outMap:
Figure BDA0001701141360000091
上述代码中,基于递归思想,应用惰性初始化(Lazy Initialization)的方式对值依赖图中结点的区间信息进行计算。
本发明具体实施例中,通过对流入结点的区间信息的判断和结点本身自循环的判断实现了结点区间信息的获取,有助于分析效率的提高。
基于上述任一具体实施例,一种区间信息分析方法,该结点的类型为赋值结点、函数调用结点、函数入口结点、条件判断结点或返回语句结点。
具体地,所述赋值结点(AssignNode)对应程序中的赋值语句。例如赋值语句x=y,在值依赖图中,以左值为主键表达赋值关系,仅建立一个赋值结点。若该结点为赋值结点,根据所述流入该结点的区间信息模拟计算,获取该结点的区间信息。
例如,a=b+c,应用流入该结点的区间信息inMap中b的区间信息和c的区间信息进行算术运算,获取a的区间信息。
再例如,a=f(5),从流入该结点的区间信息inMap中获取f()函数的返回语句结点,并将f()函数的返回语句结点的区间信息赋给a。
所述函数调用结点(ParamAtCall)对应程序中的函数调用语句。例如函数调用语句a=call(b,c),对应值依赖图中函数调用结点a@a=call(b,c)、b@a=call(b,c)和c@a=call(b,c)。值依赖图用于表达的是值的守卫条件,因而针对任一变量均需要建立一个值依赖点,a@a=call(b,c)为返回结果,表达了对a的重新定义,b@a=call(b,c)和c@a=call(b,c)则表达了对参数b和c的使用。若该结点为函数调用结点,根据所述流入该结点的区间信息获取该结点中的函数调用的参数的区间信息,将所述参数的区间信息作为该结点的区间信息。
所述函数入口结点(ParamAtEntry)对应程序中的被调函数的定义语句。若该结点为函数入口结点,且函数调用为变量,则从所述流入该结点的区间信息中提取所述变量的区间信息,并将所述变量的区间信息作为该结点的区间信息;若该结点为函数入口结点,且函数调用为常量,则将该常量的区间信息作为该结点的区间信息。
所述条件判断结点(SwitchNode)对应程序中的条件判断语句。例如if(x>0),在值依赖图中,作为结点间的依赖条件出现,同一依赖条件可能出现多次,或以求反的方式出现,但该结点的对应仅创建一次。由于条件判断结点只对条件进行判断,不改变区间信息,因此流入条件判断结点的区间信息即该条件判断结点的区间信息。
所述返回语句结点(ReturnNode)对应程序中的返回语句。例如return a+b,对应值依赖图中返回语气结点a@returna+b和b@returna+b,通过在值依赖图中构建与变量数目相等的值依赖点表达不同变量的使用。返回语句结点通常用作函数调用结点的前驱结点,将其返回的值的区间信息传递到函数调用处。由于返回语句结点只在函数借书处返回值,不改变区间信息,因而流入返回语句结点的区间信息即该返回语句结点的区间信息。
基于上述任一具体实施例,一种区间信息分析方法,任一结点的区间信息如下式所示:
outMap={<var,isLeft,VRI>}
式中,var为变量,bool为true或false,true和false分别用于表示变量var位于所述结点对应的语句中等号的左边和右边,VRI为变量var对应的值域信息。outMap为结点的区间信息,是变量var和表示该变量出现在语句中等号的左侧或右侧的布尔值isLeft所组成的偶对<var,isLeft到该变量所对应的变量值域信息VRI的一一映射。
所述流入该结点的区间信息如下式所示:
inMap={<var,VRI>}
式中,var为变量,VRI为变量var对应的值域信息。inMap为流入该结点的区间信息,是变量var到该变量所对应的变量值域信息VRI的一一映射。其中,var为流入该结点所涉及的变量集合中的一个变量,每给定一个变量var,即可通过inMap得到该变量对应的值域信息VRI。
例如,图3为本发明具体实施例的一种值依赖图,如下为图3对应的代码:
1.void foo()
2.{
3.int i;
4.i=1;
5.i=i+1;
6.}
由上,针对结点n4,流入结点n4的区间信息inMap为{<i,[1,1]>},结点n4的区间信息outMap为{<i,false,[1,1]>,<i,true,[2,2]>}。
基于上述任一具体实施例,一种区间信息分析方法,所述若该结点的前驱结点中包括该结点,则根据所述流入该结点的区间信息和该结点的类型,获取该结点循环前信息,应用所述循环前信息和自循环的守卫条件获取该结点的区间信息,进一步包括:
若该结点的前驱结点中包含该结点,即该结点存在自循环,则将该结点和自循环的守卫条件作为一个模块,首先根据所述流入该结点的区间信息和该结点的类型,获取该结点的循环前信息,随后基于该结点的循环前信息,在所述模块内部运行该结点及其自循环的守卫条件,将该结点的运行结果作为其区间信息。
在所述模块内部运行该结点及其自循环的守卫条件,进一步包括:
对由单变量控制的自循环,用模拟循环语句执行的方式来保障结果正确性;对于由多变量控制的自循环,则将循环当作条件判断语句只执行一次,并结合自循环的依赖条件进行求解,来保障时空开销的低耗性。
例如,图4为本发明具体实施例的一种单变量循环的值依赖图,如下为图4对应的代码:
Figure BDA0001701141360000121
Figure BDA0001701141360000131
根据上述代码和图4,第7行中的while循环体现在结点n4的自循环上,在求解n4的区间信息时,首先获取流入n4的区间信息,此时不考虑n4自身到自身的值的传递。
对于结点n4,流入n4的区间信息inMap为{<a,[1,1]>},将n4与n4指向n4的守卫条件作为一个模块,求解循环执行完的循环信息,此时n4的outMap相当于该循环执行完毕后变量的值域信息,随后将该值域信息传递给n4的后继结点。
由于此处的循环的条件是a<5,初始a的VRI为[1,1],a<5成立,继续执行n4结点a+=1操作;a的VRI变成[2,2],a<5依旧成立,继续执行n4结点a+=1操作;a的VRI变成[3,3],a<5依旧成立,继续执行n4结点a+=1操作;a的VRI变成[4,4],a<5依旧成立,继续执行n4结点a+=1操作;此时a的VRI变成[5,5],a<5不成立,该模块执行完毕,该模块对应的outMap为{<a,true,VRI:[5,5]>}。
接下来n4的区间信息会传递到n6和n7,n6的区间信息会传递到n7,根据本发明具体实施例提出的方法可以求解出n7结点的inMap为{<a,false,VRI:[5,5]>,<b,false,VRI:[5,5]>,<c,true,VRI:[10,10]>},这与程序实际执行的效果是完全一致的。因此本发明具体实施例对由单变量控制的循环的处理方式较为准确。
对于由多变量控制的循环,把循环当作条件判断语句处理并结合守卫条件的约束条件进行求解。本发明具体实施例中,仍将循环当作一个模块进行处理,首先执行循环一次,把所述模块的区间信息存储起来,设为该结点的区间信息outMap。
设该循环的条件为loopCondition,那么从该模块跳转到其后继结点的守卫条件的条件应为!loopCondition。继而根据所述守卫条件求出守卫条件的区间信息guardMap,再用outMap和guardMap取交,取交的结果作为当前循环基本快传递给其后继结点的区间信息。
本发明具体实施例中提出的多变量控制的循环计算方法,在实际工程应用中,有效提升了处理效率,同时应用guardMap来限制循环模块传递给其后继结点的区间信息,确保了分析的保守性。
图5为本发明具体实施例的一种区间信息分析设备的结构示意图,如图5所示,该设备包括:至少一个处理器501;以及与所述处理器501通信连接的至少一个存储器502,其中:所述存储器502存储有可被所述处理器501执行的程序指令,所述处理器501调用所述程序指令能够执行上述各实施例所提供的区间信息分析方法,例如包括:S1,对于值依赖图中任一结点,根据该结点的任一前驱结点的区间信息和该结点与该前驱结点间的守卫条件,获取该前驱结点流入该结点的区间信息;S2,根据该结点的每一前驱结点流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
本发明实施例还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行对应实施例所提供的区间信息分析方法,例如包括:S1,对于值依赖图中任一结点,根据该结点的任一前驱结点的区间信息和该结点与该前驱结点间的守卫条件,获取该前驱结点流入该结点的区间信息;S2,根据该结点的每一前驱结点流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种区间信息分析方法,其特征在于,包括:
S1,对于值依赖图中任一结点,根据该结点的任一前驱结点的区间信息和该结点与该前驱结点间的守卫条件,获取该前驱结点流入该结点的区间信息;
所述守卫条件为值依赖图中任一结点与所述任一结点的前驱结点之间存在的依赖关系的属性;所述前驱结点的值依赖信息能够传递到所述任一结点的条件为所述守卫条件得到满足;
S2,根据该结点的每一前驱结点流入该结点的区间信息和该结点的类型,获取该结点的区间信息;
任一结点的区间信息如下式所示:
outMap={<var,isLeft,VRI>};
式中,outMap为结点的区间信息,var为变量,isLeft为true或false,true和false分别用于表示变量var位于所述结点对应的语句中等号的左边和右边,VRI为变量var对应的值域信息;
所述步骤S1进一步包括:
根据下式获取该结点的任一前驱结点流入该结点的区间信息:
predsMap[i](vnode)=outMap[i]∩guardMap[i];
式中,predsMap[i](vnode)为该结点的第i个前驱结点流入该结点的区间信息,outMap[i]为该结点的第i个前驱结点的区间信息,guardMap[i]为该结点与该结点的第i个前驱结点间的守卫条件的区间信息。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2进一步包括:
S21,根据下式获取流入该结点的区间信息:
Figure FDA0003018144890000021
式中,inMap(vnode)为流入该结点的区间信息,predsMap[i]为该结点的第i个前驱结点流入该结点的区间信息;
S22,根据所述流入该结点的区间信息和该结点的类型,获取该结点的区间信息。
3.根据权利要求2所述的方法,其特征在于,所述步骤S22进一步包括:
若所述流入该结点的区间信息为空集,则该结点的区间信息为空集;
否则,若该结点的前驱结点中包括该结点,则根据所述流入该结点的区间信息和该结点的类型,获取该结点循环前信息,基于所述循环前信息和自循环的守卫条件获取该结点的区间信息;若该结点的前驱结点不包括该结点,则基于所述流入该结点的区间信息和该结点的类型获取该结点的区间信息。
4.根据权利要求2所述的方法,其特征在于,该结点的类型为赋值结点、函数调用结点、函数入口结点、条件判断结点或返回语句结点。
5.根据权利要求4所述的方法,其特征在于,
若该结点为赋值结点,则根据所述流入该结点的区间信息模拟计算,获取该结点的区间信息;
若该结点为函数调用结点,则根据所述流入该结点的区间信息获取该结点中的函数调用的参数的区间信息,将所述参数的区间信息作为该结点的区间信息;
若该结点为函数入口结点,且函数调用为变量,则从所述流入该结点的区间信息中提取所述变量的区间信息,并将所述变量的区间信息作为该结点的区间信息;
若该结点为函数入口结点,且函数调用为常量,则将该常量的区间信息作为该结点的区间信息;
若该结点为条件判断结点或返回语句结点,则该结点的区间信息为所述流入该结点的区间信息。
6.根据权利要求2至5中任一权利要求所述的方法,其特征在于,所述流入该结点的区间信息如下式所示:
inMap={<var,VRI>};
式中,inMap为流入该结点的区间信息,var为变量,VRI为变量var对应的值域信息。
7.一种区间信息分析设备,其特征在于,包括:
至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一所述的方法。
8.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6任一所述的方法。
CN201810634685.3A 2018-06-20 2018-06-20 一种区间信息分析方法 Active CN109002684B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810634685.3A CN109002684B (zh) 2018-06-20 2018-06-20 一种区间信息分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810634685.3A CN109002684B (zh) 2018-06-20 2018-06-20 一种区间信息分析方法

Publications (2)

Publication Number Publication Date
CN109002684A CN109002684A (zh) 2018-12-14
CN109002684B true CN109002684B (zh) 2021-08-06

Family

ID=64601452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810634685.3A Active CN109002684B (zh) 2018-06-20 2018-06-20 一种区间信息分析方法

Country Status (1)

Country Link
CN (1) CN109002684B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110244953A (zh) * 2019-05-21 2019-09-17 北京大学 Java程序的区间分析方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090104275A (ko) * 2008-03-31 2009-10-06 한국항공우주산업 주식회사 모듈 사이의 의존관계를 고려한 테스트 케이스를 생성하는방법 및 그 방법에 대한 프로그램을 저장한 기록매체
EP2565904A1 (fr) * 2011-09-05 2013-03-06 Commissariat à l'Énergie Atomique et aux Énergies Alternatives Procédé et dispositif d'estimation d'un paramètre de masse moléculaire dans un échantillon
CN107153610A (zh) * 2017-04-28 2017-09-12 腾讯科技(深圳)有限公司 一种程序语句错误检测方法和装置
CN107168760A (zh) * 2017-05-04 2017-09-15 腾讯科技(深圳)有限公司 语言的变量检测方法和装置
CN108053033A (zh) * 2017-12-27 2018-05-18 中南大学 一种函数调用序列生成方法和***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103198016B (zh) * 2013-03-26 2016-08-03 哈尔滨工业大学 基于联合依赖概率建模的软件错误定位方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090104275A (ko) * 2008-03-31 2009-10-06 한국항공우주산업 주식회사 모듈 사이의 의존관계를 고려한 테스트 케이스를 생성하는방법 및 그 방법에 대한 프로그램을 저장한 기록매체
EP2565904A1 (fr) * 2011-09-05 2013-03-06 Commissariat à l'Énergie Atomique et aux Énergies Alternatives Procédé et dispositif d'estimation d'un paramètre de masse moléculaire dans un échantillon
CN107153610A (zh) * 2017-04-28 2017-09-12 腾讯科技(深圳)有限公司 一种程序语句错误检测方法和装置
CN107168760A (zh) * 2017-05-04 2017-09-15 腾讯科技(深圳)有限公司 语言的变量检测方法和装置
CN108053033A (zh) * 2017-12-27 2018-05-18 中南大学 一种函数调用序列生成方法和***

Also Published As

Publication number Publication date
CN109002684A (zh) 2018-12-14

Similar Documents

Publication Publication Date Title
KR102175044B1 (ko) 인공 신경망 역방향 트레이닝 실행용 장치와 방법
US7418434B2 (en) Forward-chaining inferencing
US10754709B2 (en) Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis
CN107679625B (zh) 针对数据记录执行机器学习的分布式***及其方法
US11568129B2 (en) Spreadsheet recalculation algorithm for directed acyclic graph processing
JP4346316B2 (ja) 複数の意味レベルによるアスペクト指向プログラミングのための方法
CN111752571A (zh) 程序升级方法、装置、设备及存储介质
US11461291B2 (en) Method, electronic device and computer program product for processing machine learning model
CN112346730B (zh) 一种中间表示的生成方法、计算机设备及存储介质
CN115167865A (zh) 算法流水线编排方法、装置、电子设备和存储介质
CN114840322A (zh) 任务调度方法及装置、电子设备和存储
CN112506602A (zh) 页面生成方法及装置、电子设备、计算机可读介质
CN109002684B (zh) 一种区间信息分析方法
US8881117B2 (en) Structural analyser
CN108984843B (zh) 一种基于守卫计算的区间信息分析方法
US11714618B2 (en) Streaming compiler for automatic adjoint differentiation
Schröder et al. Dimension-wise decompositions and their efficient parallelization
CN113779311A (zh) 一种数据处理的方法、装置和存储介质
CN111626401A (zh) 运算方法及装置
CN116187458B (zh) 量子电路处理方法、装置及电子设备
CN116187463B (zh) 量子测量模式至量子电路的编译方法、装置及电子设备
CN116167447B (zh) 量子电路处理方法、装置及电子设备
CN114579137B (zh) 一种页面渲染方法、装置、计算机设备和存储介质
US20230419145A1 (en) Processor and method for performing tensor network contraction in quantum simulator
Angelopoulos Notes on the Implementation of FAM.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant