[发明专利]通过不可见接口实现不符合ABI特征的方法和系统有效
| 申请号: | 201110126383.3 | 申请日: | 2011-04-13 |
| 公开(公告)号: | CN102222017A | 公开(公告)日: | 2011-10-19 |
| 发明(设计)人: | Z·安萨里 | 申请(专利权)人: | 英特尔公司 |
| 主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/45 |
| 代理公司: | 永新专利商标代理有限公司 72002 | 代理人: | 刘瑜;王英 |
| 地址: | 美国加*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 通过 可见 接口 实现 不符合 abi 特征 方法 系统 | ||
背景技术
在计算机程序中,第一编译模块的调用例程可以通过接口向单独编译的第二编译模块的被调用例程传递一个或更多个参数的组,并且编译模块可以随后被链接以在计算机系统中执行。
接口可以符合公认规范或标准,诸如应用程序二进制接口(ABI)。ABI可以描述计算机程序之间的底层接口,并且可以处理调用规范细节,例如数据类型、大小、对齐,以控制函数变量或者参数的传递与返回。在WindowsIA-32和Linux调用规范下,例如,函数参数在调用堆栈上被传递。
底层软件编写者或编译器可以构建不遵循规范的接口,或修改现有接口以使得接口不再遵循规范。在32位Windows或Linux环境中,例如,接口可以被修改为通过寄存器传递参数以避免与调用堆栈相关联的存储器加载/存储操作。
传统上,当修改器(编程器或编译器)能够访问被调用例程和被调用例程的所有调用例程时,接口可以被构造或修改为与规范相反。在不是所有的调用例程都可用时,可用的调用例程的接口可以被修改,假设被调用例程被配置为适应所修改的接口和规范接口二者,其可以由其他调用例程使用。换句话说,被调用例程和至少一个调用例程被修改。
附图说明
图1是包括第一和第二代码模块和相对应的第一和第二编译模块的计算环境的图形描述。
图2是包括调用例程和存根例程的编译模块的图形描述。
图3是包括被调用例程的编译模块的图形描述。
图4是编译一代码模块的方法的流程图,该代码模块可以包括调用例程和/或被调用例程。
图5是编译一代码模块以通过多个接口中的一个接口从调用例程向另一个编译模块的被调用例程传递参数组的方法流程图。
图6是编译一代码模块以向被调用例程提供多个入口点以通过多个相对应的接口中的一个接口接收参数组的方法的流程图。
图7是将第一编译模块的调用例程链接到第二编译模块的被调用例程的方法的流程图。
图8是包括图2和图3中的编译模块的计算机系统的图形描述,其中调用例程的调用被链接到被调用例程的备选入口点。
图9是包括图2的编译模块和图1的编译模块的另一个计算机程序的图形描述,其中调用例程的调用被链接到存根例程,并且存根例程的调用被链接到被调用例程的入口点。
图10是包括调用例程用以通过单个接口传递来自多个相对应的位置的多个参数的编译模块的图形描述。
图11是包括调用例程用以通过多个接口中的一个接口来选择性传递参数组的另一个编译模块的图形描述。
图12是被配置为编译一代码模块并链接一编译模块的计算机系统的框图。
附图中,最左边附图标记标识了其中第一次出现该附图标记的图。
具体实施方式
本文公开了方法和系统,其配置具有多个接口的调用例程以将参数组传递到单独编译的被调用例程,并且基于被调用例程的配置通过多个接口中的一个或更多个接口而链接一编译调用例程和一编译被调用例程。多个接口可以包括规范接口(interface by convention)和备选接口(alternate interface)。本文还公开了方法和系统,其配置具有多个入口点的被调用例程以通过多个对应接口中的一个接口从另一个编译模块接收参数组。
图1是分别包括第一和第二代码模块102和104的计算环境100的图形描述。代码模块102和104可以包括源级代码和/或中间级代码。
代码模块102包括调用例程106,该调用例程106具有对代码模块104的被调用例程110的调用108。
调用108可以包括名字112以及在运行时要被传递给被调用例程110的一个或更多个参数(例如,PARM1和PARM2)的组114的指示或标识。
被调用例程110可以包括函数代码111,用以执行与参数组相关的一个或更多个函数。
环境100可以包括编译器116,用以将一代码模块102和104编译为相对应的第一和第二编译模块118和120。可替代地,代码模块102和104之一可以由另一个编译器编译。编译模块118和120可以包括机器可读代码。
编译模块118包括与调用例程106相对应的调用例程122。调用例程122包括与调用例程106的调用108相对应的调用126。
编译模块120包括与被调用例程110相对应的被调用例程124,该被调用例程124具有用名字112标识的入口点125。被调用例程124还包括与函数代码111相对应的函数代码128。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110126383.3/2.html,转载请声明来源钻瓜专利网。





