CN112148283A - 一种跨平台的abi兼容c++组件框架的实现方法 - Google Patents

一种跨平台的abi兼容c++组件框架的实现方法 Download PDF

Info

Publication number
CN112148283A
CN112148283A CN202010961266.8A CN202010961266A CN112148283A CN 112148283 A CN112148283 A CN 112148283A CN 202010961266 A CN202010961266 A CN 202010961266A CN 112148283 A CN112148283 A CN 112148283A
Authority
CN
China
Prior art keywords
abi
interface type
type
function
abi interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010961266.8A
Other languages
English (en)
Other versions
CN112148283B (zh
Inventor
张铭雨
叶雨桐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Glasssic Technology Chengdu Co ltd
Original Assignee
Glasssic Technology Chengdu Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Glasssic Technology Chengdu Co ltd filed Critical Glasssic Technology Chengdu Co ltd
Priority to CN202010961266.8A priority Critical patent/CN112148283B/zh
Publication of CN112148283A publication Critical patent/CN112148283A/zh
Application granted granted Critical
Publication of CN112148283B publication Critical patent/CN112148283B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供一种跨平台的ABI兼容C++组件框架的实现方法,该方法提出采用现代C++实现的跨平台(即与操作系统无关)的ABI兼容组件框架。该ABI兼容组件框架采用布局稳定的ABI接口类型为基础,构建专有类型系统,然后构建该专有系统中的ABI接口类型与实现函数之间的对应关系,根据该对应关系,操作系统中的编译器在对C++程序进行编译时根据该对应关系调用ABI接口类型的函数。ABI接口类型具有稳定性,使用期构建底层系统,再将其与C++程序中的函数相关联,使得在不同版本的编译器生成的可执行文件中的布局是不变的,也即他们是兼容的。

Description

一种跨平台的ABI兼容C++组件框架的实现方法
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种跨平台的ABI兼容C++组件框架的实现方法。
背景技术
C++的ABI(Application Binary Interface——C++应用程序二进制接口)定义了C++语言和操作系统间调用的低级别接口规范。它描述了一个数据类型的内存布局、导出符号和调用约定。ABI兼容指的是,两种不同版本的C++编译器编译同样的代码,生成的可执行文件互相兼容,可以被第三方正确调用而无需以第三方的配置环境重新编译源代码。由于各大厂商提供的C++标准库实现几乎不兼容,导致不同厂商、不同版本的C++编译器编译同样代码生成的可执行文件ABI不兼容。这成为业内饱受诟病的问题。
针对这个问题,目前各大主流操作系统有自己的解决方案。一是windows操作系统,微软公司在windows操作系统内提供了一个兼容的包装层--COM(Component ObjectModel,组件对象模型),这是一个针对C++语言的兼容性框架,若遵守该框架的协定编写C++程序则编译出的可执行文件在Windows操作系统下是ABI兼容的,无需担心不同版本的编译器的兼容性问题;二是GNU/Linux操作系统,GNU的GCC编译器及LLVM的clang编译器,遵守Itaninum ABI规范。它在一定的编译器大版本范围内,保持了C++标准库的ABI稳定性,这样也在一定程度上解决了ABI兼容性的问题。
但是,上述两种方式还存在如下问题:一是复杂性较高,Windows为了规避ABI兼容性问题,要求用户必须使用复杂的COM框架,这样就无法使用标准的C++类型作为对外接口,丧失了C++语言的部分功能。二是非跨平台,现有方案在Windows操作系统等主流系统采用各自的平台相关方案,导致同一个类库在不同操作系统需分别编写对外接口,增加了一倍的工作量。三是操作系统耦合性强,现有方案在Windows操作系统必须大量使用Windows系统API,很难利用纯C++语言实现全部功能,不利于开源项目及跨平台项目的研发。
发明内容
为此,本发明实施例提供一种跨平台的ABI兼容C++组件框架的实现方法,该方法提出采用现代C++实现的跨平台(即与操作系统无关)的ABI兼容组件框架。该ABI兼容组件框架采用布局稳定的ABI接口类型为基础,构建专有类型系统,然后构建该专有系统中的ABI接口类型与实现函数之间的对应关系,根据该对应关系,操作系统中的编译器在对C++程序进行编译时根据该对应关系调用ABI接口类型的函数。ABI接口类型具有稳定性,使用期构建底层系统,再将其与C++程序中的函数相关联,使得在不同版本的编译器生成的可执行文件中的布局是不变的,也即他们是兼容的。其具体技术方案如下:
根据本发明实施例提供的一种跨平台的ABI兼容C++组件框架的实现方法,包括步骤:
以泛型ABI接口类型为基础,构建底层专有ABI接口类型系统;其中,所述ABI接口类型包括纯虚函数,所述纯虚函数的参数均为基本类型;
将所述ABI接口类型系统中ABI接口类型的函数与C++程序对应实现类型中成员函数进行静态绑定;
调用C++程序对应实现类型中相应函数时,通过所述静态绑定的关系,导出所述ABI接口类型。
进一步的,所述底层专有ABI接口类型系统的构建包括步骤:
根据泛型ABI接口的成员函数协议,设置接口的多个成员函数,生成ABI接口类型;
采用GUID作为所述ABI接口类型的唯一标识符;
定义所述ABI接口类型的适配层;其中所述适配层是指所述ABI接口类型与C++程序对应实现类型中成员函数的对应关系。
进一步的,通过所述ABI接口类型的适配层将所述ABI接口类型系统中ABI接口类型的函数与C++程序对应实现类型中成员函数进行静态绑定;包括步骤:
获取所述ABI接口类型的成员函数;
利用奇异模板转换所述成员函数的指针至所述C++程序对应实现类型中成员函数的指针;
调用所述C++程序对应实现类型中相应函数,实现所述API接口类型的成员函数到所述实现类型的成员函数。
进一步的,所述ABI接口类型的适配层的定义包括步骤:
提取预先保存所述ABI接口类型信息的指针,并传递至所述ABI接口类型的成员函数;
如果出现错误,获取错误码,并生成C++异常的信息;
若没有出现错误,则将所述指针装填为所述C++程序对应实现类型并传递至所述实现类型的成员函数,构成ABI接口类型的成员函数与所述C++程序对应实现类型的成员函数的适配。
进一步的,所述GUID的生成方式包括步骤:
获取所述ABI接口类型的各成员函数的输出参数;
获取所述各输出参数的GUID;
拼接各输出参数的GUID形成数组;
计算所述数组的哈希值,并取所述哈希值的前128位作为新的GUID。
进一步的,采用GUID或所述ABI接口类型的名称相结合的方式导出所述ABI接口类型;
从GUID查询所述C++程序对应实现类型的创建函数;
通过所述创建函数创建所述ABI接口类型的实例。
进一步的,还包括引用计数管理;每创建一个实例,引用计数管理引用技术自增一;每销毁一个实例,应用技术自减一;通过引用计数归零,删除所述ABI接口类型。
进一步的,采用线程局部存储的方式对所述错误码进行存储。
进一步的,所述采用GUID或所述ABI接口类型的名称相结合的方式导出所述ABI接口类型包括步骤:
输入GUID或所述ABI接口类型的名称;
在所述GUID或所述ABI接口类型的名称的哈希值缓存中进行查询;
如果找到所述GUID或所述ABI接口类型的名称的哈希值,则创建函数并抛出C++异常,实现ABI接口类型的导出;
如果没有找到所述GUID或所述ABI接口类型的名称的哈希值,直接导出所述ABI接口类型。
本申请实施例提供的一种跨平台的ABI兼容C++组件框架的实现方法,包括步骤:以泛型ABI接口类型为基础,构建底层专有ABI接口类型系统;其中,所述ABI接口类型包括纯虚函数,所述纯虚函数的参数均为基本类型;将所述ABI接口类型系统中ABI接口类型的函数与C++程序对应实现类型中成员函数进行静态绑定;调用C++程序对应实现类型中相应函数时,通过所述静态绑定的关系,导出所述ABI接口类型。本申请实施例采用现代C++实现的跨平台的ABI兼容组件框架,由于在同一个操作系统下,若一个C++类仅包括纯虚函数,且函数参数均为基本类型时,它的布局就是稳定的,即:它在该操作系统下不同版本的编译器生成的可执行文件中的布局是不变的,也即这样的ABI接口是兼容的。因此,本申请设计构建以具有布局稳定性特性的ABI接口类型为基础的底层专有ABI接口类型系统,然后将系统内的专有ABI接口类型与C++程序对应实现类型中成员函数进行对应绑定,在编译C++程序时,通过调用C++程序对应实现类型中相应函数时,通过所述静态绑定的关系,导出所述ABI接口类型。使得本申请依托C++语言实现完全的平台无关性。同样的一个工程,采用本申请实现后,可实现不改动源代码在Windows操作系统和GNU/Linux操作系统编译使用。
进一步的,本申请通过所述ABI接口类型的适配层将所述ABI接口类型系统中ABI接口类型的函数与C++程序对应实现类型中成员函数进行静态绑定,最大限度地采用了C++标准库提供的功能,尽量做到不使用操作系统API,实现了和具体操作系统的解耦,解决了现有技术方案中Windows操作系统耦合度高的问题。
进一步的,本申请只需掌握现代C++语言即可上手,无多余的学习成本,提高了新人的工作效率。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
图1为本发明实施例提供的一种跨平台的ABI兼容C++组件框架的实现方法的流程图;
图2为本发明实施例1提供的一种跨平台的ABI兼容C++组件框架的实现方法的泛型ABI类型的GUID生成流程图;
图3为本发明实施例1提供的一种跨平台的ABI兼容C++组件框架的实现方法的ABI接口类型适配层流程图;
图4为本发明实施例1提供的一种跨平台的ABI兼容C++组件框架的实现方法的ABI接口类型的成员函数到实现函数的转换流程图;
图5为本发明实施例1提供的跨平台的ABI兼容C++组件框架的实现方法的创建接口实例的流程图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1为本发明实施例提供的一种跨平台的ABI兼容C++组件框架的实现方法的流程图,包括步骤:
以泛型ABI接口类型为基础,构建底层专有ABI接口类型系统;其中,所述ABI接口类型包括纯虚函数,所述纯虚函数的参数均为基本类型;
将所述ABI接口类型系统中ABI接口类型的函数与C++程序对应实现类型中成员函数进行静态绑定;
调用C++程序对应实现类型中相应函数时,通过所述静态绑定的关系,导出所述ABI接口类型。
由于在同一个操作系统下,若一个C++类仅包含纯虚函数,且函数参数均为基本类型时,它的布局就是稳定的。即:它在该操作系统下不同版本的编译器生成的可执行文件中的布局是不变的(仅针对主流操作系统)。这样的类型我们称之为ABI接口类型,它们是ABI兼容的。以此解决目前行业内的上述背景技术中存在的技术问题。如下所示的类型即为以一个ABI接口类型。
Figure BDA0002680627410000061
Figure BDA0002680627410000071
本申请以泛型ABI接口类型为基础,构建底层专有ABI接口类型系统;其中,所述ABI接口类型包括纯虚函数,所述纯虚函数的参数均为基本类型。
在本申请实施例中,底层专有ABI接口类型系统的构建包括步骤:
根据泛型ABI接口的成员函数协议,设置接口的多个成员函数,生成ABI接口类型;
一个ABI接口的成员函数协议设计如下所示。
返回值:错误码(int32_t)函数名
参数列表:(T1输入参数1,T2输入参数2,…,U1*输出参数1,U2*输出参数2,…,R*返回值)
ABI接口类型的成员函数的返回值为int32_t类型的错误码,代表此函数执行是否成功;其参数是由基本类型构成的参数列表。其中非指针类型代表输入参数,指针类型代表输出参数。最后一个指针类型约定为返回值类型,代表函数实际的返回值。
采用GUID作为所述ABI接口类型的唯一标识符;GUID即全局唯一标识符,是一个形如“6F9619FF-8B86-D011-B42D-00C04FC964FF”的字符串。可采用C++模板或其他形式存储这样的一个GUID,作为一个ABI类型的唯一标识符。针对泛型的ABI接口,其GUID由如下流程图2生成新的唯一标识符。参见图2为本发明实施例1提供的一种跨平台的ABI兼容C++组件框架的实现方法的泛型ABI类型的GUID生成流程图;所述GUID的生成方式包括步骤:获取所述ABI接口类型的各成员函数的输出参数;
获取所述各输出参数的GUID;
拼接各输出参数的GUID形成数组;
计算所述数组的哈希值,并取所述哈希值的前128位作为新的GUID。
比如ABI接口类型的成员函数的输出参数分别为:U1、U2、U3、...、Un的GUID分别为g1、g2、...、gn,从左到右拼接GUIDg1、g2、...、gn,形成数组,得到一个形如“6F9619FF-8B86-D011-B42D-00C04FC964FF”的字符串,计算上述字符串的哈希值,截取哈希值的前128位作为新的GUID。
由于ABI接口类型的函数参数只能使用基本类型(如上所示的int类型和void*类型),普通的库开发人员很难使用其构建自己的接口,本申请引入了一个ABI接口类型的适配层。它采用指针保存底层ABI类型的信息,并通过友好封装实现接口的调用。上述适配层是指所述ABI接口类型与C++程序对应实现类型中成员函数的对应关系。其通信时序图和函数基本设计如下图3所示.图3为本发明实施例1提供的一种跨平台的ABI兼容C++组件框架的实现方法的ABI接口类型适配层流程图,包括步骤:
提取预先保存所述ABI接口类型信息的指针,并传递至所述ABI接口类型的成员函数;
如果出现错误,获取错误码,并生成C++异常的信息;
若没有出现错误,则将所述指针装填为所述C++程序对应实现类型并传递至所述实现类型的成员函数,构成ABI接口类型的成员函数与所述C++程序对应实现类型的成员函数的适配。
举例来说,
适配类型(struct/class)
成员变量:T*internal_(T为对应ABI类型的指针)
函数定义
返回值函数名F1
参数列表:(T1参数1,T2参数2,T3参数3…,Tn参数n)
函数体:调用F1对应的ABI函数internal_->F1,并把参数列表翻译按图3所示翻译为对应ABI类型的参数。
图3中错误码代表对应函数是否执行成功,本发明采用0代表成功,负整数代表失败,正整数代表成功但是有警告信息。错误信息的存储,采用线程局部存储方式实现可重入性,确保多线程调用下的竞争安全。
根据以上内容,库开发人员可构建自己的类型系统。这个类型系统是基于接口的类型系统。本发明创立了静态分发机制,实现接口ABI接口类型的成员函数,到C++程序对应实现类型的成员函数的静态绑定。其基本流程图如图4所示。图4为本发明实施例1提供的一种跨平台的ABI兼容C++组件框架的实现方法的ABI接口类型的成员函数到实现函数的转换流程图。由于奇异模板的数据成员延迟实例化特性,可实现由ABI类型到实现类型的函数绑定。这个绑定在模板实例化时完成,没有运行期开销,效率很高。
本申请采用GUID和名字相结合的方式,实现导出接口。根据前述技术方案,每个接口都有唯一的GUID。因此,针对一个实现类型,本申请设计了哈希缓存,支持用户从GUID查询对应的实现类型的创建函数,并通过此函数创建对应接口的实例。同时,本发明还设计了以名字为查询依据的机制来创建接口的实例,基本流程图如图5所示。图5为本发明实施例1提供的跨平台的ABI兼容C++组件框架的实现方法的创建接口实例的流程图,采用GUID或所述ABI接口类型的名称相结合的方式导出所述ABI接口类型;从GUID查询所述C++程序对应实现类型的创建函数;通过所述创建函数创建所述ABI接口类型的实例。所述采用GUID或所述ABI接口类型的名称相结合的方式导出所述ABI接口类型包括步骤:
输入GUID或所述ABI接口类型的名称;
在所述GUID或所述ABI接口类型的名称的哈希值缓存中进行查询;
如果找到所述GUID或所述ABI接口类型的名称的哈希值,则创建函数并抛出C++异常,实现ABI接口类型的导出;
如果没有找到所述GUID或所述ABI接口类型的名称的哈希值,直接导出所述ABI接口类型。
在本申请的可选实施方式中,还包括引用计数管理;每创建一个实例,引用计数管理引用技术自增一;每销毁一个实例,应用技术自减一;通过引用计数归零,删除所述ABI接口类型。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

Claims (9)

1.一种跨平台的ABI兼容C++组件框架的实现方法,其特征在于,包括步骤:
以泛型ABI接口类型为基础,构建底层专有ABI接口类型系统;其中,所述ABI接口类型包括纯虚函数,所述纯虚函数的参数均为基本类型;
将所述ABI接口类型系统中ABI接口类型的函数与C++程序对应实现类型中成员函数进行静态绑定;
调用C++程序对应实现类型中相应函数时,通过所述静态绑定的关系,导出所述ABI接口类型。
2.根据权利要求1所述的跨平台的ABI兼容C++组件框架的实现方法,其特征在于,所述底层专有ABI接口类型系统的构建包括步骤:
根据泛型ABI接口的成员函数协议,设置接口的多个成员函数,生成ABI接口类型;
采用GUID作为所述ABI接口类型的唯一标识符;
定义所述ABI接口类型的适配层;其中所述适配层是指所述ABI接口类型与C++程序对应实现类型中成员函数的对应关系。
3.根据权利要求2所述的跨平台的ABI兼容C++组件框架的实现方法,其特征在于,通过所述ABI接口类型的适配层将所述ABI接口类型系统中ABI接口类型的函数与C++程序对应实现类型中成员函数进行静态绑定;包括步骤:
获取所述ABI接口类型的成员函数;
利用奇异模板转换所述成员函数的指针至所述C++程序对应实现类型中成员函数的指针;
调用所述C++程序对应实现类型中相应函数,实现所述API接口类型的成员函数到所述实现类型的成员函数。
4.根据权利要求2所述的跨平台的ABI兼容C++组件框架的实现方法,其特征在于,所述ABI接口类型的适配层的定义包括步骤:
提取预先保存所述ABI接口类型信息的指针,并传递至所述ABI接口类型的成员函数;
如果出现错误,获取错误码,并生成C++异常的信息;
若没有出现错误,则将所述指针装填为所述C++程序对应实现类型并传递至所述实现类型的成员函数,构成ABI接口类型的成员函数与所述C++程序对应实现类型的成员函数的适配。
5.根据权利要求2所述的跨平台的ABI兼容C++组件框架的实现方法,其特征在于,所述GUID的生成方式包括步骤:
获取所述ABI接口类型的各成员函数的输出参数;
获取所述各输出参数的GUID;
拼接各输出参数的GUID形成数组;
计算所述数组的哈希值,并取所述哈希值的前128位作为新的GUID。
6.根据权利要求2所述的跨平台的ABI兼容C++组件框架的实现方法,其特征在于,采用GUID或所述ABI接口类型的名称相结合的方式导出所述ABI接口类型;
从GUID查询所述C++程序对应实现类型的创建函数;
通过所述创建函数创建所述ABI接口类型的实例。
7.根据权利要求6所述的跨平台的ABI兼容C++组件框架的实现方法,其特征在于,还包括引用计数管理;每创建一个实例,引用计数管理引用技术自增一;每销毁一个实例,应用技术自减一;通过引用计数归零,删除所述ABI接口类型。
8.根据权利要求4所述的跨平台的ABI兼容C++组件框架的实现方法,其特征在于,采用线程局部存储的方式对所述错误码进行存储。
9.根据权利要求6所述的跨平台的ABI兼容C++组件框架的实现方法,其特征在于,所述采用GUID或所述ABI接口类型的名称相结合的方式导出所述ABI接口类型包括步骤:
输入GUID或所述ABI接口类型的名称;
在所述GUID或所述ABI接口类型的名称的哈希值缓存中进行查询;
如果找到所述GUID或所述ABI接口类型的名称的哈希值,则创建函数并抛出C++异常,实现ABI接口类型的导出;
如果没有找到所述GUID或所述ABI接口类型的名称的哈希值,直接导出所述ABI接口类型。
CN202010961266.8A 2020-09-14 2020-09-14 一种跨平台的abi兼容c++组件框架的实现方法 Active CN112148283B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010961266.8A CN112148283B (zh) 2020-09-14 2020-09-14 一种跨平台的abi兼容c++组件框架的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010961266.8A CN112148283B (zh) 2020-09-14 2020-09-14 一种跨平台的abi兼容c++组件框架的实现方法

Publications (2)

Publication Number Publication Date
CN112148283A true CN112148283A (zh) 2020-12-29
CN112148283B CN112148283B (zh) 2023-09-22

Family

ID=73892734

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010961266.8A Active CN112148283B (zh) 2020-09-14 2020-09-14 一种跨平台的abi兼容c++组件框架的实现方法

Country Status (1)

Country Link
CN (1) CN112148283B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114510267A (zh) * 2022-04-20 2022-05-17 麒麟软件有限公司 基于Linux系统的程序ABI接口兼容性计算方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050216701A1 (en) * 2002-06-28 2005-09-29 Taylor Richard M Automatic configuration of a microprocessor
CN1971509A (zh) * 2006-12-13 2007-05-30 上海科泰世纪科技有限公司 构件化软件系统基于设备接口实现二进制兼容运行的方法
CN103176838A (zh) * 2011-12-22 2013-06-26 盛乐信息技术(上海)有限公司 兼容Android本机程序的方法及系统
CN103858100A (zh) * 2011-10-03 2014-06-11 国际商业机器公司 采用解码时间指令优化编译用于增强应用二进制接口(abi)的代码
CN109196476A (zh) * 2016-06-03 2019-01-11 微软技术许可有限责任公司 共享垃圾收集器的不同类型图之间的无缝高性能互操作性

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050216701A1 (en) * 2002-06-28 2005-09-29 Taylor Richard M Automatic configuration of a microprocessor
CN1971509A (zh) * 2006-12-13 2007-05-30 上海科泰世纪科技有限公司 构件化软件系统基于设备接口实现二进制兼容运行的方法
CN103858100A (zh) * 2011-10-03 2014-06-11 国际商业机器公司 采用解码时间指令优化编译用于增强应用二进制接口(abi)的代码
CN103176838A (zh) * 2011-12-22 2013-06-26 盛乐信息技术(上海)有限公司 兼容Android本机程序的方法及系统
CN109196476A (zh) * 2016-06-03 2019-01-11 微软技术许可有限责任公司 共享垃圾收集器的不同类型图之间的无缝高性能互操作性

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114510267A (zh) * 2022-04-20 2022-05-17 麒麟软件有限公司 基于Linux系统的程序ABI接口兼容性计算方法

Also Published As

Publication number Publication date
CN112148283B (zh) 2023-09-22

Similar Documents

Publication Publication Date Title
US6286134B1 (en) Instruction selection in a multi-platform environment
US6526570B1 (en) File portability techniques
US6836883B1 (en) Method and system for compiling multiple languages
TWI536263B (zh) 將作業系統之原始應用程式介面投射至其它程式語言
US9690554B2 (en) Unified data type system and method
Muller et al. Weaving executability into object-oriented meta-languages
US6738968B1 (en) Unified data type system and method
RU2364918C2 (ru) Средства сопряжения типов
EP1074911A2 (en) Aspect-oriented programming
WO2019237701A1 (zh) 跨语言编程
US20040268301A1 (en) Adding new compiler methods to an integrated development environment
US7340723B2 (en) Identifier implementation mapping and methods of using namespaces
CN105164641A (zh) 扩展开发环境
US10387142B2 (en) Using annotation processors defined by modules with annotation processors defined by non-module code
US7487498B2 (en) Strategy for referencing code resources
CN112148283B (zh) 一种跨平台的abi兼容c++组件框架的实现方法
CN109558121A (zh) 接口驱动程序的开发方法、装置、设备及存储介质
EP1046985A2 (en) File portability techniques
KR20190060561A (ko) 이종 디바이스의 선택적 추상화를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 및 시스템
BR112012013808B1 (pt) sistema de rede para rede transparente
Earle et al. Functional Testing of Java Programs
US20100023923A1 (en) Method for medeling objects in a hetrogenious computing environment
CN113900631A (zh) 一种基于antlr4的代码生成器设计方法
CN118051214A (zh) 动态数组的实现方法、装置、设备及存储介质
Ghuloum Ikarus Scheme User's Guide

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant