编译装置、编译方法、通信终端设备、编译程序以及程序产品制造方法及图纸

技术编号:2868405 阅读:155 留言:0更新日期:2012-04-11 18:40
本发明专利技术的目的在于提供一种编译装置、编译方法、通信终端设备、编译程序以及程序产品,可以较高的准确度选择出源程序中执行次数较多的部分、或者执行次数较多的可能性较高的部分而优先进行编译。在本发明专利技术的终端设备的编译单元所执行的处理过程中,其步骤S11,就主程序来搜索具有多重嵌套结构或单一嵌套结构的循环。步骤S14检测从循环中读取的另外的程序。步骤S15就读取的程序来搜索具有多重嵌套结构或单一嵌套结构的循环。步骤S17将在其之前被检测出来的循环的嵌套总数作为循环深度来计算。也就是,步骤S17,针对涉及读取关系的多个程序,将构成多重嵌套结构的循环总体的多重度,作为循环深度而予以计算。步骤S20将循环深度较大的循环优先包括进应该进行编译的部分。步骤S21只对已被决定为应该编译的部分进行编译。

【技术实现步骤摘要】

本专利技术涉及一种执行编译的编译装置、具有此编译装置的通信终端设备、执行编译的编译方法、涉及上述编译的编译程序、以及基于此编译程序的程序产品,是将称作高级程序语言的编译程序语言、例如,由C语言、C++语言、Java(R)语言、FORTAN以及COBOL等以往的编译程序语言、或者APL、PL/1、ADA、Smalltalk、Lisp、汇编程序语言以及其他的所有程序语言所记述的源程序转换成某种机器语言、例如CPU(中央计算处理装置,其包括MPU(微计算处理装置))可以直接执行的机器语言,以及作为机器语言转换过程的某种中间语言的目标程序。另外,上述Java(R)是美国Sun Microsystems公司的注册商标。本说明书中的符号(R)表示注册商标。
技术介绍
作为以往的部分编译程序,有如日本专利公报平成6-202875号(专利文献1)中所述。专利文献1所记载的以往的部分编译程序,其目的在于可以决定每次读取函数时是否需要内嵌展开(inline expansion),以进行符合执行图像的内嵌展开,从而实现实用且有效的内嵌展开。因此,在上述的以往技术中,控制流程加权单元,根据控制流程解析单元的解析结果来推测构成控制流程的各部分控制流程的执行次数,并根据其执行次数来对各部分控制流程进行加权。而且,目标形成单元通过参照控制流程加权单元的加权结果,来决定各次函数读取时所读取的函数是否需要内嵌展开,从而形成反映该决定的目标程序。专利文献1所述的以往的部分编译程序,在为了决定编译部分而推算执行次数的时候,如果在从其他程序中被读取的程序中被执行的子程序具有循环的多重嵌套结构时,则可以根据此循环的嵌套的多重性、即循环深度,来推算执行次数。然而,如果在读取原程序里被执行的子程序也有循环的多重嵌套结构时,此部分编译程序却不考虑读取原程序里的循环的嵌套的多重性、即循环深度。因此,专利文献1所述的以往的部分编译程序所存在的问题在于,不能同时考虑在读取原程序中执行的循环深度和在被读取程序中执行的循环深度,而优先对总的执行次数较多的部分进行编译。其结果,这种以往技术存在无法提高程序的执行速度和节省用来存储程序的存储器的存储容量而使其达到最佳程度的问题。进而,专利文献1所述的以往的部分编译程序还存在一个问题,例如,尽管存在有2重嵌套结构的循环,但在各循环的返回地点有相同的地址、并且没有标注不同的标记(即表示地址的符号·记号)时,也无法判断返回地点是从单一循环的中途返回还是从最后返回、或是2重嵌套结构的循环的返回的地点。因此,该以往技术存在不能准确地推算出循环的次数或者执行次数的问题。也就是说,在这一点上,该以往技术存在,无法以较高的准确度选择出执行次数较多的部分,而优先对其进行编译,从而不能实现提高执行速度和节省使用存储领域使其达到最佳程度的问题。
技术实现思路
本专利技术为了解决上述的问题,其目的在于提供一种编译装置、编译方法、通信终端设备、编译程序以及程序产品,可以较高的准确度选择出源程序中的执行次数较多的部分、或者执行次数较多的可能性较高的部分,而优先对其进行编译,从而,可以实现以较高的精度度来提高程序的执行速度和节省用来存储程序的存储器的存储容量,使其达到最佳程度。本专利技术的编译装置,可以将源程序转换成目标程序,其包括用来检测包含在所述源程序中的多重嵌套结构的多重嵌套结构检测单元、用来检测构成所述多重嵌套结构的各单位循环的返回地点的地址的返回地点的地址检测单元、用来判断在所述返回地点的地址检测程序检测出的多个返回地点的地址中,是否有相互间地址相同的重复返回地点的地址的地址重复判定单元、在所述地址重复判定程序判断出有所述重复返回地点的地址时,将所述源程序转换到所述重复返回地址为互不相同的地址的目标程序来作为所述目标程序的分割单元。根据该编译装置,由于在构成所述多重嵌套结构的各单位循环的返回地址中有重复的返回地址时,分割单元将重复的返回地址变成相互不同的返回地址,所以,可以准确地计算出循环深度。由此,则可以准确地选择出执行次数较多的可能性较高的循环深度较大的部分而优先进行编译。上述编译装置,还可以将多个源程序转换成目标程序,其包括用来检索包含在所述多个源程序的其中之一的源程序里的、具有多重或单一嵌套结构的第1循环的第1循环检测单元、在所述第1循环检测单元每次检测所述第1循环时,就从所述多个源程序中检索包含在从所述第1循环中读取的其它源程序中且具有多重或单一嵌套结构的第2循环,同时在检测出所述第2循环时,通过将所述第1循环检测单元作为检测所述第1循环的检测单元而重复所述第2循环的检索,来检索所述的一个源程序与从该源程序开始依次读取的各源程序之间所构成的多重嵌套结构的第2循环检测单元、将所述第1循环检测单元每次检测出所述第1循环时所述第1循环的嵌套数、或者在所述第2循环检测单元检测出第2循环时从所述第1循环至个第2循环的循环依次累加所得到的嵌套总数作为循环深度予以计算的循环深度评价单元、通过对所述多个源程序中的循环深度较大的循环优先进行编译,而将所述多个源程序转换成所述目标程序的部分编译单元。根据上述编译装置,不仅可计算被包含在一个源程序中的循环的嵌套数,还可计算包括以该循环为起点而依次读取的源程序中所包含的循环的嵌套数在内的总嵌套数,从而优先对总的嵌套数较大的循环进行编译。也就是说,包括在从一个源程序中依次读取的作为读取原程序的各源程序之间所构成的多重嵌套结构在内,对总的嵌套数较大的循环优先进行编译。因此,可以选择出源程序中执行次数较多的可能性较高的部分来进行编译。在上述编译装置中,所述部分编译单元,在所述循环深度评价单元计算出来的循环深度不超过预先规定的阈值时,不对所述多个源程序的任何部分进行编译。根据上述编译装置,由于在循环深度评价单元计算出来的循环深度不超过预先规定的阈值时,不对多个源程序的任何部分进行编译,所以,可以避免对提高执行速度有较小贡献的部分进行徒劳无益的编译而浪费存储领域的使用。上述编译装置,还包括在所述循环深度评价单元计算出多个循环深度时,判断所述多个循环深度是否均等的均等度评价单元,所述部分编译单元在所述均等度评价单元判断出所述多个循环深度为均等时,不对所述多个源程序的任何部分进行编译。根据上述编译装置,由于在多个循环深度为均等时,不对多个源程序的任何部分进行编译,所以,可以避免过多地对提高执行速度有相同程度贡献的部分进行编译而影响存储领域的有效利用。本专利技术的通信终端设备,其中包括上述编译装置中的其中之任何一项、通过传输媒体而获得所述编译装置应该进行编译的源程序的通信单元、执行所述编译装置形成的目标程序的执行控制单元。根据上述通信终端设备,由于通信终端设备具有通信单元,所以,可以通过传输媒体而获得源程序,从而可以通过编译装置对其进行编译。而且,又由于通信终端设备具有执行控制单元,所以,可以执行经过编译的目标程序。换言之,通过此编译装置,可以执行通过传输媒体而获得的源程序。并且,由于通信终端设备具有本专利技术的编译装置,所以可以较高的精度来提高程序的执行速度和节省存储领域,从而达到最佳程度。在上述通信终端设备中,所述执行控制单元,将作为所述编译装置的处理对象且其中的任意部分没有进行编译的源程序的非编译程序也作为执行对本文档来自技高网
...

【技术保护点】
一种编译装置,将源程序转换成目标程序,其特征在于包括:多重嵌套结构检测单元,用来检测包含在所述源程序中的多重嵌套结构;返回地点的地址检测单元,用来检测构成所述多重嵌套结构的各单位循环的返回地点的地址;地址重复判定单元,用来判断在所述返回地点的地址检测单元检测出的多个返回地点的地址中,是否有相互间地址相同的重复返回地点的地址;分割单元,在所述地址重复判定单元判断出有所述重复返回地点的地址时,将所述源程序转换到所述重复返回地点的地址为互不相同的地址的目标程序来作为所述目标程序。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:吉田健宏川本琢二
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP[日本]

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

1