[发明专利]编译方法、调试方法、编译程序和调试程序无效
申请号: | 200710106835.5 | 申请日: | 2007-05-10 |
公开(公告)号: | CN101071385A | 公开(公告)日: | 2007-11-14 |
发明(设计)人: | 浅尾忍 | 申请(专利权)人: | 松下电器产业株式会社 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京德琦知识产权代理有限公司 | 代理人: | 陆弋;朱登河 |
地址: | 日本大阪*** | 国省代码: | 日本;JP |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 编译 方法 调试 编译程序 程序 | ||
技术领域
本发明涉及用于将用高级语言描述的程序转换成目标程序的编译方法、调试方法、编译程序和调试程序。
背景技术
在近年来的软件开发中,程序规模不断增大,基于这种情况,具有高可维护性和高可重用性的面向目标语言受到了关注。面向目标语言的典型例子是C++语言。作为替代一直以来传统地广泛用于编程的C语言的语言,C++语言正在成为关注的焦点,并且在相关技术领域,编程中的语言从C语言转变到C++语言。在这种语言转变中,因为C++语言是C语言的高级兼容语言,故在常规情况下只要简单地通过将C语言编译器替换为C++语言编译器,就能生成没有任何操作问题的目标代码。然而,当用C语言中叙述的程序在C++语言中编译时,会引起代码大小和执行时间不受欢迎地增长的问题。
针对该问题的常规第一解决方案是,使用文献(见M·A·Ellis、B·Stroustrup著,Takanori Adachi和Hiroshi Koyama译的“注释C++参考手册”7.4章“连接指配”)中所叙述的关于程序的连接指配(linkageassignment)。第二解决方案是分析程序中语言规范的范围并且尽可能地对编译自动应用子集的语言规范,如同在日本专利申请公开No.2003-50700中所叙述的。
然而,在第一解决方案中,迫使程序员在编程中考虑连接指配,这阻碍了C语言轻易地向C++语言转变。在第二解决方案中,没有考虑到与程序中编码符号(函数名、变量名等)相关的一致性,虽然可以将C++语言编译成用作内建为C++子集规范的EC++语言。结果是,无法期望这样的优化,例如基于语言规范的兼并对代码大小和执行时间的缩减。
发明内容
因此,本发明的主要目的在于提供一种编译方法,其中程序员可以轻易地将程序转变为向上兼容的程序,而不必注意任何连接指配,并且作为程序规范的最大兼并的结果,可以实现代码大小和执行时间的缩减,而且本发明的目的还在于提供能够轻易地进行微调的调试方法。
为了解决以上问题,根据本发明的编译方法是一种用于将输入程序转换成目标程序的编译方法,包括:
部分语言规范判定步骤,用于判定在输入程序中设置的至少两个特定范围中的语言规范;
判断步骤,用于判断所述特定范围中的语言规范之间是否存在差别;和
部分代码校正步骤,用于在判断出所述特定范围中的语言规范之间存在差别时,对特定范围之一中的至少一部分代码进行校正。
根据上述方法,由于代码被校正从而使得它们可以彼此组合在一起,包括部分不同语言规范的程序可以被组合起来并且以最优的语言规范编译,因此可以更有效地生成代码。
优选地,在所述部分语言规范判定步骤中,基于在特定范围中使用的编程语言的工具性程序判定所述语言规范。
根据上述方法,由于程序员可以将包括部分不同语言规范的程序组合在一起而不校正源程序,并且可以以最优的语言规范编译该程序,因此可以更有效地生成代码。
作为上述方法的更加优选的模式,在所述部分语言规范判定步骤中,在所述输入程序中存在语言规范控制语句的情况下,基于所述语言规范控制语句判定所述语言规范。
根据上述方法,例如,程序员可以根据源程序中的#pragma指令来描述所述语言规范控制语句,并且因此可以自由地选择语言规范而不受来自源程序中初始描述的工具性程序的任何影响。
更加优选地,在所述语言规范判定步骤中,在向用于编译所述输入程序的编译系统提供了语言规范控制指令的情况下,基于所述语言规范控制指令判定所述语言规范。
根据上述方法,例如,程序员基于编译系统的选项提供语言规范控制指令,并且由此可以自由地选择语言规范而不校正源程序,并且不受来自源程序中初始描述的工具性程序的影响。
更加优选地,在所述部分代码校正步骤中,在所有函数中的定义语言规范与引用语言规范之间存在差别的情况下,具有子集语言规范的函数代码名被改变为具有超集语言规范的函数代码名。
根据上述方法,即使在定义的语言规范和引用的语言规范之间存在任何差别,也可以将程序组合起来。
作为上述方法的更加优选的模式,在所述部分代码校正步骤中,所有被多重定义的外部函数都被改变为具有单独函数名并且在程序中未被多重定义的外部函数,并且当所有被多重定义的外部函数都被改变为具有所述单独函数名并且在程序中未被多重定义的所述外部函数时,再次执行部分语言规范判定步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于松下电器产业株式会社,未经松下电器产业株式会社许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710106835.5/2.html,转载请声明来源钻瓜专利网。