当前位置: 首页 > 专利查询>微软公司专利>正文

具有对异步程序流程建模的软件工具制造技术

技术编号:2851367 阅读:274 留言:0更新日期:2012-04-11 18:40
一种使用具有少于用于程序中的模型异步转移建模的所有可能边的流程图来形成程序的中间表示的编译器。该流程图在多个阶段中形成。在一个阶段中,该流程图在不对异步转移建模的情况下形成。在稍后的阶段中,选择性地添加所述异步转移的效果的表示。作为稍后阶段的一部分,对可能的异步转移建模的边在受保护区域中对在受保护区域外部生存的变量的定义之后被添加到流程图。变量活性的修改的定义用于结合异步转移之后的任何区域,包括受保护区域中的变量的使用。如果定义的变量的唯一使用是在处理程序中,则从受保护区域出发的边也被添加到该模型。

【技术实现步骤摘要】

本专利技术一般涉及计算机软件系统,尤其涉及在执行之前处理计算机程序地计算机软件系统。
技术介绍
计算机程序通常被编写为一系列指令。某些指令可指定当执行程序时执行的操作。其它指令可通过指定执行其它指令的顺序或条件来控制程序流程。还有其它指令可指定程序执行的参数,诸如表示程序中的变量的信息如何储存在附加到执行该程序的处理器的存储器中。在高级编程语言中,指令不必要以一对一的关系对应于可由其上执行该软件的平台执行的指令。相反,指令可以是人类可理解的形式。这一形式的程序首先必须被处理成适用于由特定的平台执行的形式。具有不同处理器或不同操作系统的平台可能要求程序被不同地表示以供正确执行。通常使用软件工具将程序转换成可由特定的平台执行的形式。工具的一个示例是编译器。除将每一高级指令简单地表达为处理器可执行的一系列指令之外,这些工具可优化程序或处理程序。可以当准备程序用于执行时在程序上执行的处理的示例是失效代码移除、调度、代码移动和公共子表达式消除。在处理程序时,软件工具通常将代码转换成中间表示。中间表示提供了当执行程序时必须执行的操作的方便表示。它也提供了关于将用于在程序执行时储存信息的变量的信息,包括关于那些变量所使用的程序的各部分的信息。中间表示也提供了关于操作之间的程序流程的信息。通常,中间表示将程序的流程描述为“流程图”。流程图包含框和边。每一框表示将以规定的顺序执行的指令的集合,使得对该框有一个起始点和一个结束点。在流程图中,边将框互连,以指示执行这些框的顺序。流程图包括表示当执行程序时可采取的通过框的每一可能路径的边。多条路径可连接到每一框。关于程序流程和存储器要求的信息可用于以多种方式处理程序。它可用于准备实现用于在特定平台上执行的程序的指令,或可用于以平台无关的方式进行优化。图1A示出了以C#高级编程语言编写的程序100。程序100包括一系列指令,诸如指令112和114。在图1A的示例中,指令112和114是变量Y的“定义”。如此处所使用的,术语“定义”一般指可创建、修改或改变与变量相关联的信息的任何指令。程序100也包括定义尝试体(try body)的开始的指令120。括号121定义了以指令120开始的尝试体的结束。尝试体有时候也被称为“代码的受保护区域”。尝试体可结合代码的一个或多个保护区域来工作,代码的保护区域有时候也被称为“保护者区域”或“处理程序”。此处,示出了两个处理程序,一个异常处理程序和一个“最终”处理程序。异常处理程序有时候也被称为“捕捉处理程序”。异常处理程序以指令122开始,并以括号123结束。程序100也具有与尝试体相关联的最终处理程序。最终处理程序以指令124开始,并以括号125结束。程序100也包括位于尝试体之外的指令,诸如指令130。处理程序的操作由图1B示出,图1B示出了程序100的执行。在该示例中,尝试体140包括程序100内的第一可执行指令。在正常的操作中,尝试体140将被首先执行,然后以由那些指令指定的顺序执行尝试体140中的指令。最终处理程序144中的指令作为由尝试体140、异常处理程序142和最终处理程序144组成的尝试区域中的最终指令来执行。在正常的操作中,当尝试体140中的指令的执行完成时,执行传递到最终处理程序144。在执行了最终处理程序144中的指令之后,执行程序100中尝试区域140之后的指令。此处,那些指令在区域150中。异常处理程序142中的指令仅当在执行尝试体140中的指令时发生异常时执行。异常条件可由程序100中的特殊异常指令的执行来创建。然而,在大多数情况下,异常条件是由程序100内命令平台执行程序100执行被认为对该平台是非法操作的操作的指令的执行引起的。非法操作的示例是除以零以及指示平台访问未安装在系统中或由操作系统保留的地址处的存储器的指令。异常处理程序142可被认为是异步执行的。如此处所使用的,术语“异步”描述了响应于在程序执行期间除程序中预期引起控制的所得转移的指令之外的条件而发生的事件,诸如异常。最终处理程序144也可被认为是异步执行的,因为它可以在异常处理程序142之后执行。图1C是更详细地示出从尝试体140到异常处理程序142的可能路径的流程图,由此示出了可从异步事件中引发的问题。尝试体140中的每一指令被表示为框,诸如162、164、166、168、170或172。诸如边178等边示出了框之间的正常流程。边180A、180B、182、184、186、188、190和192表示异步边。异步边表示尝试体140中的任何指令的执行会导致程序流程被转向异常处理程序142的可能性。边180A表示在尝试体140中的任何指令执行之前可发生错误的可能性。边180B表示在异常处理程序142的执行结束时发生的控制转移。某些现有技术软件工具形成了包括尝试区域的程序的中间表示,在尝试区域中,通过如图1C所示地添加从其中可转移流程的每一可能的指令到处理程序区域142的边而使得控制的异步转移成为可能。添加从尝试区域中的每一指令出发的边用于避免可从处理程序的不完整表示而导致的错误。然而,使用图1C所示的“所有可能边”方法添加异步边的一个缺陷是流程图的所得的复杂性。程序100表示相对简单的程序。商业上重大的程序可能包含比所示的多得多的指令。另外,程序可包含具有与每一区域相关联的多个处理程序的多个尝试区域。此外,尝试区域可被嵌入在其它尝试区域中。作为另一复杂性,流程在执行处理程序之后不必要返回到尝试体的结束。处理程序可能将程序流程转移到程序内的任何位置或程序中具有由运行时条件确定的特定位置的多个位置中的任一个。作为结果,向流程图添加所有可能的异步边很大程度上复杂化了该流程图。基于这一流程图处理程序因此可能花费相当多的时间或计算机资源。在某些现有技术软件工具中,从添加所有可能异步边所得的复杂性通过创建没有异步边的流程图而被避免。然而,为进行补偿,基于这些流程图的工具处理程序不对尝试区域中依赖于所有可能流程路径的准确表示的指令执行操作。尽管以这一方式处理程序可以更快或更简单,但是未实现软件工具的益处。期望具有一种表示包括控制的异步转移的程序的方法,以便于由软件工具处理程序。
技术实现思路
本专利申请描述了用于对包含诸如出现在从尝试体区域到处理程序的转移中的异步流程的程序建模的程序的中间表示。程序内的异步转移的效果的简化表示用于降低处理程序的复杂性,但是维持了结果的准确性。这一中间表示可以用许多方式来使用。在一个方面,本专利技术涉及一种处理程序的方法,该程序具有从中可异步地转移程序执行的第一区域,以及可在从第一区域进行程序的异步转移之后执行的第二区域。该方法包括形成至少第一区域的表示,该表示包括多个第一类型的构造。第一类型的构造中的每一个表示一个或多个操作。该表示包括至少一个第二类型的构造,第二类型的构造中的每一个表示第一类型的构造之间的执行流程。对于第一区域中包含变量定义的至少一个第一类型的构造,指示从第一类型的构造出发的流程的第二类型的构造基于该变量是否在第二区域中使用而被选择性地添加到该表示。在另一方面,本专利技术涉及一种用于处理程序的计算机可读介质。该程序具有第一区域、第二区域和第三区域中的指令。程序执行可从第一区域异步地转移到第三区域,且第二区域中的指本文档来自技高网
...

【技术保护点】
一种处理具有多个区域以及至少一个处理程序的程序的方法,所述方法包括确定第一区域外部的变量的活性,包括当变量在所述处理程序的执行之后的任何区域中使用时,将所述变量分类为在所述第一区域外部生存,所述任何区域包括所述第一区域。

【技术特征摘要】
US 2005-1-14 11/036,862;US 2005-1-18 11/039,2411.一种处理具有多个区域以及至少一个处理程序的程序的方法,所述方法包括确定第一区域外部的变量的活性,包括当变量在所述处理程序的执行之后的任何区域中使用时,将所述变量分类为在所述第一区域外部生存,所述任何区域包括所述第一区域。2.如权利要求1所述的方法,其特征在于,所述第一区域包括受保护区域。3.如权利要求1所述的方法,其特征在于,还包括形成表示所述第一区域中定义的变量是否被分类为在所述第一区域外部生存的数据结构。4.如权利要求3所述的方法,其特征在于,形成数据结构包括将值写入由编译器形成的符号表。5.如权利要求3所述的方法,其特征在于,还包括形成所述第一区域的中间表示,所述中间表示包括具有定义变量的指令部分以及定义指示指令之间的可能流程路径的边的指令部分的指令,并且形成所述中间表示包括定义跟随定义变量的每一指令的边的指令,所述数据结构指示所述变量在所述第一区域外部生存。6.如权利要求3所述的方法,其特征在于,形成数据结构包括形成位向量。7.如权利要求1所述的方法,其特征在于,所述第一区域是其中嵌入了尝试区域的尝试区域,并且确定第一区域外部的活性包括确定所述尝试区域外部的活性以及确定嵌入在其中的尝试区域外部的活性。8.如权利要求1所述的处理程序的方法,其特征在于,所述程序具有第一区域,从所述第一区域中,程序执行可被异步地转移到所述处理程序;以及第二区域,所述第二区域可在执行了所述处理程序之后执行,所述方法还包括a)形成至少所述第一区域的表示,所述表示包括多个第一类型的构造,每一所述第一类型的构造表示一个或多个操作;以及至少一个第二类型的构造,所述至少一个第二类型的构造中的每一个表示所述第一类型的构造之间的执行流程;以及b)对所述第一区域中包含变量定义的至少一个第一类型的构造,当所述变量被确定为在所述第一区域外部生存时,将指示从所述第一类型的构造出发的流程的第二类型的构造选择性地添加到所述表示。9.如权利要求8所述的方法,其特征在于,将第二类型的构造选择性地添加到所述表示包括当所述变量在所述处理程序区域中使用但不在所述第二区域中使用时,关于所述表示记录所述变量在所述处理程序区域中使用,而不添加第二类型的构造。10.如权利要求8所述的方法,其特征在于,所述第一类型的构造是框,且所述第二类型的构造是边。11.如权利要求1...

【专利技术属性】
技术研发人员:IM贝尔曼JJ雷迪根
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1