【技术实现步骤摘要】
【国外来华专利技术】背景最初以人类可读或高级源语言编写的程序一般通过编译和链接的过程变换成机器语言的可执行程序。称为二进制码的所得的程序版本可由基于处理器的系统来执行。程序通常出于方便、可重复使用性、设计复杂度管理和其它原因被划分成称为过程的子程序。过程可用其它名称来指代,例如,诸如C或C++等语言中的函数。在高级语言形式中,被划分成过程的程序一般被编译并链接成程序的二进制形式,该形式的程序也带有大致对应于高级语言形式的程序中的各个过程。在编译和链接之后,在系统上执行的程序通常使用程序栈来帮助调用过程以及返回到主程序流或调用过程,这在本领域中是公知的。一般而言,由于过程调用可以是嵌套的,且主程序可被认为是主过程,因此在以下描述中,不失一般性地使用术语“作出调用的过程”和“被调用的过程”。过程调用必须在程序栈上储存与调用上下文有关的一组值,包括诸如指令指针等由作出调用的过程使用的寄存器的值,以及可通过被调用的过程的执行而被盖写的其它寄存器。诸如作出调用的过程的局部变量和不会由被调用的过程修改的参数等其它数据值也可被储存在栈上。栈上与特定过程的特定调用有关的所有数据被称为其栈帧或其激活记录 ...
【技术保护点】
一种方法,包括:分析第一二进制形式的程序和与所述第一二进制形式的程序相关联的展开信息;至少部分地基于所述分析的结果,对所述第一二进制形式的程序执行优化以产生第二二进制形式的程序;以及至少部分地基于所述分析的结果且至少 部分地基于所执行的优化,为所述第二二进制形式的程序生成经更新的展开信息。
【技术特征摘要】
【国外来华专利技术】US 2004-7-8 10/888,6631.一种方法,包括分析第一二进制形式的程序和与所述第一二进制形式的程序相关联的展开信息;至少部分地基于所述分析的结果,对所述第一二进制形式的程序执行优化以产生第二二进制形式的程序;以及至少部分地基于所述分析的结果且至少部分地基于所执行的优化,为所述第二二进制形式的程序生成经更新的展开信息。2.如权利要求1所述的方法,其特征在于,所述展开信息还包括与所述程序的每一过程的每一展开区域相关联的、与展开所述程序有关的语言不相关信息。3.如权利要求2所述的方法,其特征在于,分析所述第一二进制形式的程序以及与所述第一二进制形式的程序相关联的展开信息还包括生成所述程序的表示,包括指令、基本块和过程的表示;标识每一所表示的基本块的基本块类型,并用所述基本块类型来标记所述表示;为所述程序的每一过程的每一展开区域生成展开状态数据和展开属性;将所述展开状态数据和属性与所述程序的指令的表示相关联;以及将所述展开状态数据和属性与所述程序的过程的表示相关联。4.如权利要求3所述的方法,其特征在于,至少部分地基于所述分析的结果对所述第一二进制形式的程序执行优化以生成所述第二二进制形式的程序还包括保护与所述展开属性相关联的指令在优化期间不被删除;如果与所述展开属性相关联的第一指令在优化期间要被复制以创建第二指令,则至少部分地基于与所述第一指令的表示相关联的展开属性创建所述第二指令的表示以及与所述第二指令的表示相关联的展开属性;防止任何指令在优化期间从一种基本块类型的基本块移至一不同基本块类型的基本块;以及如果所述第一二进制形式的程序中的过程在优化期间要被拆分成两个新过程,则至少部分地基于用于第一二进制形式的程序中的过程的表示的展开状态数据和属性,并至少部分地基于用于作出所述拆分的指令的展开规则,生成每一新过程的表示、用于所述每一新过程的表示的展开状态数据和属性。5.如权利要求4所述的方法,其特征在于,至少部分地基于所述分析的结果并至少部分地基于所执行的优化为所述第二二进制形式的程序生成新的展开信息还包括为每一过程的每一展开区域调整展开状态数据,以使所述数据与所述第二二进制形式的程序中的区域的新长度和位置相一致;以及将所调整的展开状态数据与所述第二二进制形式的程序相关联。6.如权利要求5所述的方法,其特征在于,如果所述第一二进制形式的程序中的过程在优化期间要被拆分成两个新过程,则所述过程被拆分成父过程和至少一个子过程,并且其中,至少部分地基于所述分析的结果并至少部分地基于所执行的优化为所述第二二进制形式的程序生成新展开信息还包括标记用于通过所述拆分而创建的每一子过程的表示的展开状态数据,以指示所述子过程具有零长度前序,并将所述展开状态数据变为活动之处的程序位置设为所述子过程的开始。7.如权利要求1所述的方法,其特征在于,所述展开信息还包括与处理源代码形式的程序的源语言中定义的异常有关的语言相关异常处理信息,所述第一二进制形式的程序至少部分地通过对所述源代码形式的程序执行所述源语言的编译器来导出。8.如权利要求7所述的方法,其特征在于,分析所述第一二进制形式的程序和与所述第一二进制形式的程序相关联的展开信息还包括标识被执行来导出所述第一二进制形式的程序的编译器;为所述程序的指令、基本块和过程生成表示;如果用于所述程序的过程的展开信息中包括异常处理信息,则至少部分地基于所述编译器的标识为所述过程解释所述异常处理信息;至少部分地基于所述异常处理信息为每一过程的表示生成异常调用点表、异常类型表以及异常处理动作表;以及在包含生成异常的代码的基本块的表示与包含对所述异常的处理器的基本块的表示之间的关系中添加关联。9.如权利要求8所述的方法,其特征在于,至少部分地基于所述分析的结果对所述第一二进制形式的程序执行优化以产生所述第二二进制形式的程序还包括保护包含生成异常的代码的基本块不被删除;保护包含处理异常的代码的基本块不被删除;如果包含生成异常的代码的第一基本块在优化期间要被复制以创建第二基本块,则创建所述第二基本块的表示以及所述第二基本块的表示中对应于所述第一基本块的表示中的每一现有关联的关联;如果所述第一二进制形式的程序中的过程在优化期间要被拆分成两个新过程,则至少部分地基于用于所述第一二进制形式的程序中的过程的所述异常调用点表、所述异常类型表和所述异常处理动作表,为每一新过程创建异常调用点表、异常类型表和异常处理动作表。10.如权利要求9所述的方法,其特征在于,至少部分地基于所述分析的结果并至少部分地基于所执行的优化为所述第二二进制形式的程序生成新的展开信息还包括至少部分地基于以下的一个或多个为所述第二二进制程序中的每一过程生成新的异常调用点表、新的异常类型表和新的异常处理动作表通过分析所述第一二进制形式的程序而分别生成的所述异常调用点表、异常类型表和异常处理动作表,分别为通过优化期间的过程拆分而生成的新过程生成的新的异常调用点表、新的异常类型表和新的异常处理动作表,以及在包含生成异常的代码的每一基本块与包含用于所述异常的处理器的基本块之间的表示中的关联。11.如权利要求10所述的方法,其特征在于,还包括将用于在优化期间创建的新过程中的异常调用点的处理器的地址的负偏移表示为所述异常调用点表中的无符号数。12.一种系统,包括通信上耦合到存储设备的处理器;储存在所述存储设备上并可由所述处理器执行的分析模块,所述分析模块分析第一二进制形式的程序以及与所述第一二进制形式的程序相关联的展开信息;储存在所述存储设备上并可由所述处理器执行的优化模块,所述优化模块至少部分地基于所述分析的结果对所述第一二进制形式的程序执行优化以产生第二二进制形式的程序;以及储存在所述存储设备上并可由所述处理器执行的生成模块,所述生成模块至少部分地基于所述分析的结果并至少部分地基于所执行的优化,为所述...
【专利技术属性】
技术研发人员:H帕蒂尔,R穆斯,G洛尼,
申请(专利权)人:英特尔公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。