CN115629802A - 程序移植处理方法及装置 - Google Patents
程序移植处理方法及装置 Download PDFInfo
- Publication number
- CN115629802A CN115629802A CN202211277918.1A CN202211277918A CN115629802A CN 115629802 A CN115629802 A CN 115629802A CN 202211277918 A CN202211277918 A CN 202211277918A CN 115629802 A CN115629802 A CN 115629802A
- Authority
- CN
- China
- Prior art keywords
- instruction set
- program
- function
- file
- set architecture
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
提供了一种程序移植处理方法及装置。该程序移植方法用于将源指令集架构的给定程序移植到目标指令集架构下,包括:根据预定义的函数差异表中的每条记录中的源函数名称在已有程序的代码文件中进行全字符匹配;以及将匹配成功的源函数修改为对应记录的目标函数,函数差异表指示在目标指令集架构下的编译器支持的目标函数与源指令集架构下的编译器支持的源函数的对应关系。根据本发明实施例,通过将手动的移植转为自动化来提升代码移植效率。
Description
技术领域
本公开涉及电子教学的技术领域,具体涉及一种程序移植处理方法及装置。
背景技术
ARM架构是一种封闭的指令集架构,众多使用ARM架构的芯片制造商,会根据自身需求,在不改变原有设计的基础上,调整产品频率和功耗。但经过多年发展和演变,ARM架构变得复杂和冗余,且ARM架构存在专利费用高昂和架构授权的问题。反观RISC-V架构,在设计之初,就定位为一种完全开源的架构,并具有指令简单、可定制指令集等优点。因此已有芯片制造商制造基于RISC-V架构的芯片。但同时ARM架构下的已有程序移植到RISC-V架构上是一个巨大的工作量
程序员对于这种移植需要在理解RISC-V架构的基础上重新改写自己的程序,这种巨大的工作量不利于RISC-V生态环境的搭建。因此,有必要提供一种更简单的程序移植方案,以将ARM架构下的程序移植到RISC-V架构。
发明内容
有鉴于此,本发明提供了一种程序移植处理方法及装置。
根据本发明的第一方面,提供一种程序移植处理方法,用于将源指令集架构的给定程序移植到目标指令集架构下,包括:
根据预定义的函数差异表中的每条记录中的源函数名称在所述已有程序的代码文件中进行全字符匹配;以及
将匹配成功的源函数修改为对应记录的目标函数,所述函数差异表指示在所述目标指令集架构下编译器支持的目标函数与所述源指令集架构下编译器支持的源函数的对应关系。
在一些实施例中,还包括:根据函数缺失表构建库函数代码文件,所述函数缺失表指示由源指令集架构下的编译器支持但目标指令集架构下的编译器无法支持的函数;
采用所述目标指令集架构下的编译器将所述给定程序的代码文件和所述库函数代码文件编译为可执行文件。
在一些实施例中,当采用所述目标指令集架构下的编译器编译所述已有程序的代码文件时,根据编译错误提示获得所述函数缺失表。
在一些实施例中,所述采用所述目标指令集架构下的编译器将所述给定程序的代码文件和所述库函数代码文件编译为可执行文件包括:
采用所述目标指令集架构下的编译器将所述给定程序的代码文件和所述库函数代码文件分别编译为程序目标文件和库目标文件;
采用所述目标指令集架构下的编译器将所述程序目标文件和所述库目标文件集成为所述可执行文件。
在一些实施例中,还包括:将所述库目标文件打包为静态库文件或动态库文件,所述采用所述目标指令集架构下的编译器将所述程序目标文件和所述库目标文件集成为所述可执行文件为:采用所述目标指令集架构下的编译器将所述程序目标文件和静态库文件或动态库文件集成为可执行文件。
在一些实施例中,所述源函数来自于NEON Intrinsics,所述目标函数来自于RVVIntrinsics。
根据本发明的第二方面,提供一种程序移植处理装置,用于将源指令集架构的给定程序移植到目标指令集架构下,包括:
检索模块,用于根据预定义的函数差异表中的每条记录中的源函数名称在所述已有程序的代码文件中进行全字符匹配;以及
修正模块,将匹配成功的源函数修改为对应记录的目标函数,所述函数差异表指示在所述目标指令集架构下的编译器支持的目标函数与所述源指令集架构下的编译器支持的源函数的对应关系。
在一些实施例中,所述修正模块还用于根据函数缺失表构建库函数代码文件,所述函数缺失表指示由源指令集架构下的编译器支持但目标指令集架构下的编译器无法支持的函数。
根据本发明的第三方面,提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现上述任一项所述的程序移植处理方法。
根据本发明的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序或指令,所述计算机程序或指令被处理器执行时实现上述任一项所述的程序移植处理方法。。
根据上述实施例,根据差异表将源指令集架构下的编译器支持的源函数替换为目标指令集架构下的编译器支持的目标函数,通过将手动的移植转为自动化来提升代码移植效率。进一步地,快速确定目标指令集架构下需要增加的函数定义并在库函数代码文件对其进行定义,再通过编译器将库函数代码文件和给定程序的代码文件集成为一个二进制的可执行文件,如此程序移植方案工作量比一一修改代码文件要少的多,也方便的多。
应当说明的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
通过参照以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1为本申请实施例提供的一种电子设备的结构示意图;
图2是本发明实施例提供的程序移植处理方法的流程图;
图3是本发明实施例提供的程序移植处理方法的附加步骤的流程图;
图4是图3中的步骤S120的一具体实施方式的流程图;
图5是图3中的步骤S120的另一具体实施方式的流程图;
图6是一个示例性的编译器的概念示意图;
图7是本发明实施例提供的程序移植处理装置的结构图。
具体实施方式
为了便于理解本公开,下面将参照相关附图对本公开进行更全面的描述。附图中给出了本公开的较佳实施例。但是,本公开可以通过不同的形式来实现,并不限于本文所描述的实施例。相反的,提供这些实施例的目的是使对本公开的公开内容的理解更加透彻全面。
在本文中使用以下概念:
指令集架构(ISA)是软硬件之间的结构抽象,它定义了一整套的指令集合以及支持每条指令的底层硬件组合。处理器是实现指令集架构的设备。指令集架构有多种不同方式的分类,例如,早期按照体系结构的复杂性,指令集架构包括复杂指令集架构、精简指令集架构、超长指令集架构,但是随着多年发展演变,上述指令集架构又形成更多分支,例如,在精简指令集架构基础上发展起来的ARM架构和RISC-V架构,ARM架构和RISC-V架构由于有本质上的不同,因此也可视为两种不同的指令集架构。
静态库文件是在编译链接期被链接到可执行文件中,因此可执行文件的体积比较大。动态库文件是在程序运行时才被载入,因此可执行文件的体积比较小,但是程序运行时候依赖动态库。动态库文件是为了解决静态库的体积较大的缺点而产生的。
图1为本申请实施例提供的一种电子设备1300的结构示意图。该电子设备1300,具体包括:至少一个处理器1320、至少一个存储器1310、电源组件1330、网络接口1340、输入输出接口1350和通信总线1360。其中,存储器1310用于存储计算机程序,计算机程序由处理器1320加载并执行。另外,本实施例中的电子设备1300具体可以为笔记本计算机、平板、台式机等电子设备。
电源组件1330用于为电子设备1300上的各硬件设备提供工作电压;网络接口1340能够为电子设备1300创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口1350,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。另外,存储器1310作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等。
存储器1310所存储的资源包括操作系统程序2201、编译器程序2202和应用程序2203。操作系统2201用于管理与控制电子设备1300上的各硬件设备以及编译器程序2202和应用程序2203等软件程序。操作系统2201例如可以是Windows Server、Netware、Unix、Linux等。编译器程序2202用于将应用程序的源代码文件编译为二进制的可执行文件或中间文件。处理器1320包括封装的指令集1321,处理器1320根据指令集1321对编译得到的可执行文件进行译码、执行等操作,因此编译器程序2202需要将程序源代码编译为指令集1321中的指令,处理器1320才能够执行。
不同的指令集架构适配不同的编译器程序,将应用程序从一个指令集架构的处理器移植到另一个指令集架构的处理器时,需要采用适配的编译器程序进行编译,并且在移植过程中,还需要处理那些不受本地编译器支持的函数。
图2是本发明实施例提供的程序移植处理方法的流程图。程序移植处理方法用于将源指令集架构的给定程序移植到目标指令集架构下。该方法具体包括以下步骤。
在步骤S110中,根据预定义的函数差异表中的每条记录中的源函数名称在已有程序的代码文件中进行全字符匹配。
在步骤S120中,将匹配成功的源函数修改为对应记录的目标函数,其中,函数差异表指示在目标指令集架构下的编译器支持的目标函数与源指令集架构下的编译器支持的源函数之间的对应关系。
本实施例实现根据预定义的函数差异表将给定程序的代码文件进行修正。函数差异表至少包括两个项,如表格1所示,一项表示源指令集架构下需要被替换的函数名称,另一项表示目标指令集架构下用于替换的函数名称,例如表格1中,XXXXX为源指令集架构下需要被替换的函数名称,YYYYY为目标指令集架构下用于替换的函数名称。进一步地,函数差异表还包括更多细节,例如,如果目标函数和源参数的输入/输出参数、返回值的数据类型不同,还需要进行转换处理。
表格1
源指令集架构 | 目标指令集架构 |
XXXXX | YYYYY |
XXX | YYYY |
在一些实施例中,源指令集结构为ARM架构,目标指令集架构为RISC-V架构,函数差异表中的源函数来自于NEON Intrinsics,目标函数来自于RVV Intrinsics,函数差异表指示了NEON Intrinsics和RVV Intrinsics中的多个API的对应关系。NEON Intrinsics和RVV Intrinsics分别是ARM架构和RISC-V架构下的比汇编更高级的API,均可直接在C/C++中进行调用。在编译时,ARM架构下的编译器会将NEON Intrinsic调用替换成对应的NEON指令,RISC-V架构下的编译器则将intrinsic函数调用转换成具体的向量指令。NEON指令是专门针对ARM处理器的大规模到并行运算而设计的,向量指令是RISC-V指令集的标准扩展模块之一(简称RVV Intrinsics)。
图3是本发明实施例提供的程序移植处理方法的附加步骤的流程图。该步骤可以在图1所示的步骤之前或之后执行。具体包括以下步骤。
在步骤S310中,根据函数缺失表构建库函数代码文件。函数缺失表指示由源指令集架构下的编译器支持但目标指令集架构下的编译器无法支持的函数,库函数代码文件定义了由源指令集架构下的编译器支持但目标指令集架构下的编译器无法支持的各个函数。
在步骤S320中,采用目标指令集架构下的编译器将给定程序的代码文件和库函数代码文件编译为可执行文件。
当需要将源指令集架构下的给定程序的代码移植到目标指令集架构时,可先在目标指令集架构下对给定程序的代码进行试编译,试编译是利用目标指令集架构下的编译器将给定程序的代码文件编译为可执行的二进制文件,试编译一般不会成功,而是会给出无法找到某些函数定义(unresolved symbol)的错误提示,这个问题是因为一些由源指令集架构下的编译器支持的函数目标指令架构下的编译器并不支持,例如NEON Intrinsics中的一些API,RVV Intrinsics并不支持。为解决这一问题,根据本实施例,先构建库函数代码文件,在库函数代码文件中定义由源指令集架构下的编译器支持但不由目标指令集架构下的编译器无法支持的各个函数,接着再通过目标指令集架构下的编译器将给定程序的代码文件和库函数代码文件编译为二进制的可执行文件,由于编译时给定程序从库函数代码文件得到所需函数定义,因此不会报错。
图4是图3中的步骤S320的一具体实施方式的流程图。参考图上所示,步骤S320包括步骤S3201和S3202。
步骤S3201是采用目标指令集架构下的编译器将给定程序的代码文件和库函数代码文件分别编译为程序目标文件和库目标文件。
步骤S3202是采用目标指令集架构下的编译器将程序目标文件和库目标文件集成为可执行文件。
图6是一个示例性的编译器的概念示意图。如图上所示,编译器的功能可分为前端、优化器和后端,前端主要进行诸如词法分析、语法分析、语义分析、生成中间代码等操作,优化器进行代码优化,后端根据优化后的中间代码生成可执行文件。
结合本实施例和图6,先在目标指令集架构下将给定程序的代码文件和库函数代码文件分别编译为程序目标文件和库目标文件,即编译器执行了前端操作,这里的目标文件是前端生成的中间代码,通常为二进制文件(例如对于.cpp或.c的代码文件来说,其编译得到的目标文件为.o),然后将程序目标文件和库目标文件集成为单一的二进制的可执行文件,即编译器执行了后端操作,将优化后的中间代码集成为可执行文件。
图5是图1中的步骤S320的另一具体实施方式的流程图。步骤S320包括步骤S3211至S3213。
步骤S3211是采用目标指令集架构下的编译器将给定程序的代码文件和库函数代码文件分别编译为程序目标文件和库目标文件。
步骤S3232是采用目标指令集架构下的编译器将库目标文件打包为静态库文件或动态库文件。
步骤S3213是采用目标指令集架构下的编译器将程序目标文件和静态库文件或动态库文件集成为可执行文件。
同样结合本实施例和图6,先采用目标指令集架构下的编译器将给定程序的代码文件和库函数代码文件分别编译为程序目标文件和库目标文件,即编译器执行了前端操作,这里的目标文件是前端生成的中间代码,通常为二进制文件,然后将库目标文件打包为静态库文件或动态库文件(例如将.o文件打包文.a或.so的文件),接着采用目标指令集架构下的编译器将程序目标文件和静态库文件或动态库文件链接到一起,形成单一的二进制的可执行文件,即编译器执行了后端操作。
根据上述实施例,构建预定义的函数差异表,并根据差异表将源指令集架构下的编译器支持的源函数替换为目标指令集架构下的编译器支持的目标函数,通过将手动的移植转为自动化,能够提升代码移植效率。进一步地,快速确定目标指令集架构下需要增加的函数定义并在库函数代码文件对其进行定义,再将库函数代码文件和给定程序的代码文件集成为一个二进制的可执行文件,如此程序移植方案工作量比一一修改代码文件要少的多,也方便的多。
图7是本发明实施例提供的程序移植处理装置的结构图。如图上所示,该装置包括检索模块701和修正模块702。
检索模块701用于根据预定义的函数差异表中的每条记录中的源函数名称在所述已有程序的代码文件中进行全字符匹配。
修正模块702用于将匹配成功的源函数修改为对应记录的目标函数,所述函数差异表指示在所述目标指令集架构下编译器支持的目标函数与所述源指令集架构下编译器支持的源函数的对应关系。
在一些实施例中,修正模块702用于还用于根据函数缺失表构建库函数代码文件,所述库函数代码文件定义了在所述目标指令集架构下编译器无法支持的函数定义。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,该指令可以存储为计算机可读存储介质中,并由处理器进行加载和执行。为此,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序或指令,该计算机程序或指令被处理器执行时可实现上述程序移植处理方法中各实施例的各个过程。其中,计算机可读存储介质,如U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
由于该可读存储介质中所存储的指令,可以执行本公开实施例所提供的任一种程序移植处理方法中的步骤,因此,可以实现本公开实施例所提供的任一种程序移植处理方法所能实现的有益效果,在此不再赘述。
需要说明的是,本说明书中在对各个实施例进行描述时,均重点说明的是与其他实施例的不同之处,而对于各个实施例之间相同或相似的部分可互相参考进行理解。对于系统实施例而言,由于其与方法实施例基本相似,因此相关之处可参考对方法实施例部分的说明。
此外,需要指出的是,在本公开的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行,某些步骤可以并行或彼此独立地执行。对本领域的普通技术人员而言,能够理解本公开的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本公开的说明的情况下运用他们的基本编程技能就能实现的。
最后应说明的是:显然,上述实施例仅仅是为清楚地说明本公开所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本公开的保护范围之中。
Claims (10)
1.一种程序移植处理方法,用于将源指令集架构的给定程序移植到目标指令集架构下,包括:
根据预定义的函数差异表中的每条记录中的源函数名称在所述已有程序的代码文件中进行全字符匹配;以及
将匹配成功的源函数修改为对应记录的目标函数,所述函数差异表指示在所述目标指令集架构下的编译器支持的目标函数与所述源指令集架构下的编译器支持的源函数的对应关系。
2.根据权利要求1所述的程序移植处理方法,其中,还包括:
根据函数缺失表构建库函数代码文件,所述函数缺失表指示由源指令集架构下的编译器支持但目标指令集架构下的编译器无法支持的函数;
采用所述目标指令集架构下的编译器将所述给定程序的代码文件和所述库函数代码文件编译为可执行文件。
3.根据权利要求2所述的程序移植处理方法,其中,当采用所述目标指令集架构下的编译器编译所述已有程序的代码文件时,根据编译错误提示获得所述函数缺失表。
4.根据权利要求2所述的程序移植处理方法,其中,所述采用所述目标指令集架构下的编译器将所述给定程序的代码文件和所述库函数代码文件编译为可执行文件包括:
采用所述目标指令集架构下的编译器将所述给定程序的代码文件和所述库函数代码文件分别编译为程序目标文件和库目标文件;
采用所述目标指令集架构下的编译器将所述程序目标文件和所述库目标文件集成为所述可执行文件。
5.根据权利要求1所述的程序移植处理方法,还包括:将所述库目标文件打包为静态库文件或动态库文件,则所述采用所述目标指令集架构下的编译器将所述程序目标文件和所述库目标文件集成为所述可执行文件为:采用所述目标指令集架构下的编译器将所述程序目标文件和静态库文件或动态库文件集成为可执行文件。
6.根据权利要求1所述的程序移植处理方法,其中,所述源函数来自于NEONIntrinsics,所述目标函数来自于RVV Intrinsics。
7.一种程序移植处理装置,用于将源指令集架构的给定程序移植到目标指令集架构下,包括:
检索模块,用于根据预定义的函数差异表中的每条记录中的源函数名称在所述已有程序的代码文件中进行全字符匹配;以及
修正模块,将匹配成功的源函数修改为对应记录的目标函数,所述函数差异表指示在所述目标指令集架构下的编译器支持的目标函数与所述源指令集架构下的编译器支持的源函数的对应关系。
8.根据权利要求7所述的程序移植处理装置,其中,所述修正模块还用于根据函数缺失表构建库函数代码文件,所述函数缺失表指示由源指令集架构下的编译器支持但目标指令集架构下的编译器无法支持的函数。
9.一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1-6中任一项所述的程序移植处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序或指令,所述计算机程序或指令被处理器执行时实现如权利要求1-6中任一项所述的程序移植处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211277918.1A CN115629802A (zh) | 2022-10-19 | 2022-10-19 | 程序移植处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211277918.1A CN115629802A (zh) | 2022-10-19 | 2022-10-19 | 程序移植处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115629802A true CN115629802A (zh) | 2023-01-20 |
Family
ID=84906344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211277918.1A Pending CN115629802A (zh) | 2022-10-19 | 2022-10-19 | 程序移植处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115629802A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539469A (zh) * | 2024-01-10 | 2024-02-09 | 睿思芯科(成都)科技有限公司 | Risc-v的可视化向量编程方法、系统及相关设备 |
-
2022
- 2022-10-19 CN CN202211277918.1A patent/CN115629802A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539469A (zh) * | 2024-01-10 | 2024-02-09 | 睿思芯科(成都)科技有限公司 | Risc-v的可视化向量编程方法、系统及相关设备 |
CN117539469B (zh) * | 2024-01-10 | 2024-03-19 | 睿思芯科(成都)科技有限公司 | Risc-v的可视化向量编程方法、系统及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10073684B2 (en) | Adaptive selection of programming language versions for compilation of software programs | |
US8065669B2 (en) | Apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations | |
CN113283613B (zh) | 深度学习模型的生成方法、优化方法、装置、设备及介质 | |
CN110955431A (zh) | 编译环境的处理方法及装置 | |
CN108197027B (zh) | 软件性能优化方法、可存储介质、计算机、计算机程序 | |
CN113031932B (zh) | 项目开发方法、装置、电子设备及存储介质 | |
US8051426B2 (en) | Co-routines native to a virtual execution environment | |
US8341613B2 (en) | Reducing stack space consumption via head-call optimization | |
CN108595334B (zh) | 一种计算Java程序动态切片的方法、装置及可读存储介质 | |
CN115629802A (zh) | 程序移植处理方法及装置 | |
US9886251B2 (en) | Optimized compiling of a template function | |
CN114968192A (zh) | 一种项目创建方法、装置、计算机设备及存储介质 | |
US20100083238A1 (en) | Binary manipulation of intermediate-language code | |
CN106484488B (zh) | 一体化云编译方法和系统 | |
CN109558121A (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
US8914782B2 (en) | Optimization of declarative queries | |
CN114840195B (zh) | 一种针对iOS SDK静态库的私有化方法 | |
Ali et al. | Parallelizing user-defined functions in the ETL workflow using orchestration style sheets | |
CN115390846A (zh) | 编译构建方法、装置、电子设备和存储介质 | |
CN114115899A (zh) | 项目开发方法、装置、电子设备及存储介质 | |
US20070240132A1 (en) | System and method for compiler interprocedural optimization having support for object files in libraries | |
CN112241268A (zh) | 一种keil工程的编译方法、系统及设备 | |
CN111061481A (zh) | 数据格式转换方法及装置 | |
KR102130132B1 (ko) | 확장성 있는 바이오-시뮬레이션 방법 및 이를 위한 장치 | |
CN117573203A (zh) | 基于国产神威处理器的Openmc移植方法及系统 |
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 |