[发明专利]程序代码的运行方法和运行装置以及编译方法和编译装置有效
申请号: | 201811194861.2 | 申请日: | 2018-10-15 |
公开(公告)号: | CN111045657B | 公开(公告)日: | 2021-08-13 |
发明(设计)人: | 孙渊磊;蒋奕;陈永健;周正兴 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
代理公司: | 北京龙双利达知识产权代理有限公司 11329 | 代理人: | 陈洪艳;王君 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序代码 运行 方法 装置 以及 编译 | ||
本申请提供一种程序代码的编译方法和编译装置以及运行方法和运行装置。该编译方法和编译装置在编译程序代码阶段,为被声明为原生方法的方法生成注册表项,该注册表项中记录用于确定该方法的符号名的信息和空地址。该运行方法和运行装置在运行程序代码阶段,根据被声明为原生方法的方法的符号名和注册表项中记录的用于确定符号名的信息,找到该方法对应的注册表项,并在该对应的注册表项中记录该方法对应的原生方法的地址,从而完成该方法与其对应的原生方法的绑定,以便于后续过程中能够根据该绑定关系调用该方法对应的原生方法。
技术领域
本申请涉及程序语言领域,并且更具体地,涉及程序代码的运行方法和运行装置以及编译方法和编译装置。
背景技术
Java程序中,可以调用通过C或C++等原生语言实现的原生方法(native method),且,这些原生方法符合Java原生接口(Java native interface,JNI)规范。
在Java程序调用原生语言实现的原生方法之前,需要先将通过原生语言实现的原生方法与Java程序中声明的原生方法绑定。Java程序中声明的原生方法是指在Java程序中声明该方法是通过原生方法实现的,在Java程序中不需要实现。
如何实现通过原生语言实现的原生方法与Java程序中声明的原生方法之间的绑定,是一个亟待解决的技术问题。
发明内容
本申请提供一种程序代码的编译方法和编译装置以及运行方法和运行装置,能够实现通过原生语言实现的原生方法与Java程序中声明的原生方法之间的绑定,以便于Java程序能够调用原生方法。
第一方面、本申请提供了一种程序代码的运行方法。该运行方法包括:确定被声明为原生方法的第一方法的符号名和该第一方法对应的原生方法的地址,所述符号名用于标识所述第一方法;根据所述第一方法的符号名确定与所述第一方法对应的第一注册表项,所述第一注册表项包括第一字段,所述第一字段中记录的信息用于确定所述第一方法的符号名;在所述第一注册表项包括的第二字段中记录所述第一方法对应的原生方法的地址。
该运行方法中,将第一方法对应的原生方法的地址记录在已有的注册表项中,并且该地址与第一方法具有对应关系,从而可以使得后续调用第一方法对应的原生方法时,可以直接根据该注册表项找到第一方法对应的原生方法的地址,即可以调用该原生方法。
在一些可能的实现方式中,所述第一注册表项中的第一字段中记录的是所述第一方法的符号名。
在一些可能的实现方式中,所述第一注册表项中的第一字段中记录所述第一方法的符号名相对于所述第一注册表项的地址偏移量,所述第一方法的符号名记录在字符串表中,所述字符串表中记录一个或多个被声明为原生方法的方法的符号名。
在一些可能的实现方式中,根据所述第一方法的符号名确定与所述第一方法对应的第一注册表项,包括:计算所述第一方法的符号名的哈希值;将所述哈希值作为第一索引,确定哈希表中与该第一索引对应的第一哈希表项,所述哈希表中的哈希表项用于记录所述哈希表项对应的注册表项在原生注册表中的索引,所述原生注册表中包括一个或多个注册表项;将所述原生注册表中与所述第一哈希表项中记录的第二索引对应的注册表项确定为所述第一注册表项。
在一些可能的实现方式中,所述通信方法还包括:确定所述第一方法的调用桩,所述调用桩中包括第一标签,第一标签与所述第一方法对应的第一注册表项具有对应关系;根据所述第一标签和所述对应关系,确定所述第一方法对应的所述第一注册表项;根据所述第一注册表项包括的第二字段中记录的地址,调用所述第一方法对应的原生方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811194861.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种金属喷淋清洗剂
- 下一篇:一种直驱风机虚拟同步发电系统