[发明专利]编译器以及用于编译源代码的方法有效
申请号: | 201480083834.1 | 申请日: | 2014-12-04 |
公开(公告)号: | CN107003884B | 公开(公告)日: | 2019-12-24 |
发明(设计)人: | 伊利亚·格里戈里耶维奇·克柳奇科夫;亚历山大·弗拉基米罗维奇·斯莱萨连科 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 11205 北京同立钧成知识产权代理有限公司 | 代理人: | 杨文娟;臧建明 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 可执行程序 源代码 中间表示 变换应用 输出程序 转换 度量 编译 个性 融合 替代 | ||
1.一种用于编译源代码(S)的方法,其特征在于,包括:
接收所述源代码(S),分别使用多个替代转换方案将所述源代码(S)转换成多个中间表示(IRk);
将融合和/或变换应用于所述多个中间表示(IRk)中的每一个以获得多个变换后表示(ORk);
分别从所述多个变换后表示(ORk)中生成多个可执行程序(Ek);以及
取决于所述多个可执行程序(Ek)的一个或多个性能度量而选择所述多个可执行程序(Ek)中的一个或多个作为输出程序(P)。
2.根据权利要求1所述的方法,其特征在于,所述性能度量包括执行速度、内存占用率、环路数目、环路距离的总和、环路的嵌套深度、运行时间和编译时间中的一个或多个。
3.根据权利要求1或权利要求2所述的方法,其特征在于,所述变换包括不可达代码去除、代码移动、公用子表达式去除、折叠和提取、折叠和嵌入、嵌入和常量折叠中的一个或多个。
4.根据权利要求1或权利要求2所述的方法,其特征在于,将融合和/或变换应用于所述多个中间表示(IRk)中的每一个以获得多个变换后表示(ORk)包括:将多个不同变换应用于所述多个中间表示(IRk)中的每一个以获得所述多个中间表示(IRk)中的每一个的多个变换后表示。
5.根据权利要求1或权利要求2所述的方法,其特征在于,所述源代码(S)用领域专用编程语言编写。
6.一种具有用其实施的计算机可读程序代码的非暂时性计算机可读存储媒体,其特征在于,所述计算机可读程序代码用于执行根据权利要求 1至5中任一项所述的方法。
7.一种编译器(1),其特征在于,包括:
转换设备(2),用于接收源代码(S)作为输入并且分别使用多个替代转换方案将所述源代码(S)转换成多个中间表示(IRk);
变换设备(3),耦合到所述转换设备(2)并且用于将融合和/或变换应用于所述多个中间表示(IRk)中的每一个以获得多个变换后表示(ORk);
程序生成器(4),耦合到所述变换设备(3)并且用于分别从所述多个变换后表示(ORk)中生成多个可执行程序(Ek);以及
选择设备(5),耦合到所述程序生成器(4)并且用于取决于所述多个可执行程序(Ek)的一个或多个性能度量而选择所述多个可执行程序(Ek)中的一个或多个作为输出程序(P)。
8.根据权利要求7所述的编译器(1),其特征在于,所述性能度量包括执行速度、内存占用率、环路数目、环路距离的总和、环路的嵌套深度、运行时间和编译时间中的一个或多个。
9.根据权利要求7或权利要求8所述的编译器(1),其特征在于,所述变换包括不可达代码去除、代码移动、公用子表达式去除、折叠和提取、折叠和嵌入、嵌入和常量折叠中的一个或多个。
10.根据权利要求7或权利要求8所述的编译器(1),其特征在于,所述变换设备(3)进一步用于将多个不同变换应用于所述多个中间表示(IRk)中的每一个以获得所述多个中间表示(IRk)中的每一个的多个变换后表示。
11.根据权利要求7或权利要求8所述的编译器(1),其特征在于,所述源代码(S)用领域专用编程语言编写。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201480083834.1/1.html,转载请声明来源钻瓜专利网。