[发明专利]在优化中能减少中断处理的编译器及其优化方法无效
申请号: | 99100114.1 | 申请日: | 1999-01-12 |
公开(公告)号: | CN1223402A | 公开(公告)日: | 1999-07-21 |
发明(设计)人: | 二俣秀治 | 申请(专利权)人: | 日本电气株式会社 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 中原信达知识产权代理有限责任公司 | 代理人: | 穆德骏,余朦 |
地址: | 日本*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 优化 减少 中断 处理 编译器 及其 方法 | ||
本发明涉及一种将源程序翻译成目标程序的编译器及其优化方法,更具体地,涉及一种能减少中断处理的编译器及其优化方法。
对于要设计成在其体系中具有中断处理功能的编译器来说,它必须能在编译时间内处理以上中断。通常,在器件的中断事件中的例程分支亦即中断功能被设计为在源程序中描述,因此,该器件能够处理上述中断处理功能。
在源程序执行过程中,中断功能的分支并不规律。为保护在分支前已被使用的寄存器中的内容,可能被用到的寄存器中的全部内容都必须在开始中断功能前保存起来,并且在完成中断功能后,被保存的寄存器的内容必须返回。
关于这类常规技术,例如在日本专利未决公开(kokai)号为Heisei2-257224中公开的器件“连接编辑处理器”(Linkage Edit Processor)。所公开的一连接编辑处理器当用于功能调用部分的寄存器(调用寄存器)与用于功能被调用部分的寄存器(被调用寄存器)彼此不相符时,在没有递归调用的情况下,删除用于指示寄存器保存/返回的冗余指令。这样,编辑处理器便减少了代码数量,缩短了源程序执行时间,即进行了优化。
在正常功能调用时,这种编辑处理器优化方法要求有一代码,它在功能调用指令前提供一调用寄存器的保存指令,以及在功能调用指令后提供一被保存寄存器的返回指令,以便在被调用部分不损坏调用寄存器中的内容。借助一寄存调用函数信息和使用寄存器信息的表,这种方法删除了不必要的、在被调用部分未被使用的寄存器保存/返回代码,也参照上表,删除了在调用部分函数的被保存/返回的寄存器代码。
图7显示了一常规编译器的结构实例,它与公开号为2-257224的专利公开的编辑处理使用同样的优化方法删除不必要寄存器中的保存/返回代码。图7所示的编译器由以下组成:输入单元701,用于接收源程序来完成词法分析;句法分析单元702,用于在由词法阵列分析出句法之后生成句法树;优化单元703,用于优化句法树;代码生成单元704,用于基于优化的句法树生成中间代码712;函数使用寄存器控制表705,用于寄存调用函数和使用寄存器的信息;函数使用寄存器提取单元706,在分析中间代码712后,在函数使用寄存器控制表705中寄存每个函数调用函数名和使用寄存器;和输出单元708,用于提供汇编程序文件713,该文件具有在被调用部分未被使用的、且以后被删除的寄存器的保存/返回代码。
参照图7,将易于理解在公开号为2-257224的专利中公开的常规的编译器优化方法能在编译器中被实现,即在通用编译器的代码生成单元704之后额外提供输出单元708,参照函数使用寄存器控制表705和向该表提供信息的寄存器函数提取单元706,以删除在被调用部分未使用的寄存器的保存/返回代码,删除在调用部分函数的被保存/返回寄存器。
现在,参照图7和图6来描述编译器的常规优化方法,图6显示了源程序711的一实例。参照相应于由代码生成单元704所提供的中间代码712的部分,在图6所示的源程序中,在调用存在于函数f6中的函数f5之前,有一被函数f6所用的寄存器“g”、“h”的保存代码;在调用函数f5之后,有一被函数f6所用的寄存器“g”、“h”的返回代码。
根据输入中间代码712,函数使用寄存器提取单元706识别函数f6的定义,并将由函数f6所调用的函数名f5、被函数f6所使用的寄存器名“g”、“h”寄存到函数使用寄存器控制表705中。接下来,它识别函数f5的定义,并将被函数f5所使用的寄存器名“f”寄存到函数使用寄存器控制表705中。
参照函数使用寄存器控制表705,输出单元708识别在被函数f6所使用的寄存器“g”、“h”和被函数f5所使用的寄存器“f”之间没有重复的寄存器名。然后,在函数f5的调用指令之前的寄存器“g”、“h”的保存代码和在函数f5的调用指令之后的寄存器“g”、“h”的返回代码被删除,然后提供汇编程序文件713。
然而,上述编译器的常规优化方法不能删除来自一程序某一地址函数分支所用的寄存器的保存/返回代码,比如一中断函数。
这就是在调用部分不具有函数的中断函数在设备中断发生时不会损坏所用寄存器内容的原因。尽管在相应于函数被调用部分的中断函数头处必须提供寄存器保存指令,并在中断函数的结尾处提供其返回指令,在调用部分还必须提供函数使用寄存器信息,以便删除这些保存/返回代码。因此,不能删除不必要的已保存/返回寄存器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于日本电气株式会社,未经日本电气株式会社许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/99100114.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:激光头装置及波长选择性衍射光栅
- 下一篇:熔纺纤维的冷却和上油装置