CN111078290B - 一种用于可扩展指令集的编译器及编译方法 - Google Patents

一种用于可扩展指令集的编译器及编译方法 Download PDF

Info

Publication number
CN111078290B
CN111078290B CN201911298413.1A CN201911298413A CN111078290B CN 111078290 B CN111078290 B CN 111078290B CN 201911298413 A CN201911298413 A CN 201911298413A CN 111078290 B CN111078290 B CN 111078290B
Authority
CN
China
Prior art keywords
instruction
matching
compiling
instruction set
code
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.)
Active
Application number
CN201911298413.1A
Other languages
English (en)
Other versions
CN111078290A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201911298413.1A priority Critical patent/CN111078290B/zh
Publication of CN111078290A publication Critical patent/CN111078290A/zh
Application granted granted Critical
Publication of CN111078290B publication Critical patent/CN111078290B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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

Abstract

本发明公开了一种用于可扩展指令集的编译器及编译方法。本发明的编译器包括:输入模块、嵌入模块、编译模块。本发明的步骤包括:获取并解析指令集描述文件,获取并解析编译策略文件,生成匹配函数,在编译器中嵌入匹配函数,获取源代码,将源代码中的特殊代码段编译为扩展指令序列,普通代码段编译为基础指令序列。本发明可以简化用户在已有的编译系统添加扩展指令的工作,提高程序的执行效率。

Description

一种用于可扩展指令集的编译器及编译方法
技术领域
本发明涉及物理技术领域,更进一步涉及计算机技术领域中的一种用于可扩展指令集的编译器及编译方法。本发明可用于解决开放可扩展指令集处理器的编译工具开发困难且效率低的问题。
背景技术
通用处理器可以运行各种程序,处理各种数据,但在一些专用领域CPU的处理效率低下;专用处理器则对于特定应用领域处理效率高,但其开发周期长且应用范围窄。所以近年来部分指令集架构的开发者们将目光转向了开放可扩展的CPU架构。允许在CPU内核中加入自定义的指令意味着芯片设计厂商与高校研究人员可以创建自己的优化算法,然后直接在CPU上运行,从而有机会进一步提高性能和效率。
处理器的的开发设计离不开工具链的支持,功能强大且被广泛使用的编译器工具链如GNU与LLVM虽然能在在一定程度上能支持用户添加新的指令,但是对于一些比较特殊的指令,如向量操作或矩阵操作,工具链的修改非常困难。对于硬件开发人员来说,要攻克代码量庞大且结构复杂的编译器工具几乎是不现实的,在这种情况下的一个常用的解决办法是在高级语言程序的编译器中不增加对新指令的支持,而是直接在高级语言代码中嵌入汇编代码,例如传统的编译器如GCC、C++及Clang都提供了内联汇编代码的功能,在GCC中这些汇编代码被称作GCC Inline ASM,这种技术非常有用,但提高了对程序员的要求,破坏了代码的可移植性。另一种方法是在编译器中添加intrinsic核函数,例如LLVM编译框架提供了在已有的编译体系中添加intrinsic函数的接口,该方法需要修改编译框架内多个文件,要求开发人员具备一定的编译原理知识与对编译器结构有一定的了解。
华为科技有限公司在其申请的专利文献“一种硬件加速方法、编译器以及设备”(专利申请专利号:201510373054.7,专利公开号:CN 106325967 A)提出了一种用于异构设备的编译器。该编译器包括获取单元、确定单元与编译单元。获取单元读取源代码与编译策略信息,获取的策略信息包含从源代码特征集合到不同目标处理器的映射,确定单元通过获取的策略信息确定属于第一代码类型的第一代码段与属于第二代码类型的第二代码段发往第一处理器,将第一代码段编译为第一可执行代码,并将第二代码段编译为第二可执行代码发往第二处理器。该编译器存在的不足之处在于,确定单元只能实现不同的源代码段到不同的处理器设备的匹配,不能实现不同源代码段到同一处理器的不同指令集的匹配,缺失细粒度的指令匹配功能;获取单元不具备动态添加指令集的接口,编译器扩展能力不足。
松下电器产业株式会社在其申请的专利文献“编译装置和编译方法”(专利申请号:03152256.4,专利公开号:1312582C)中提供了一种的编译方法。该方法通过在源程序中包括运算符定义文件将源程序翻译成机器语言程序,运算符定义文件中包括各种定点类型运算符的定义。该编译方法由产生中间编码的中间编码产生单元、用专用指令替换原运算符对应的中间代码的指令替代单元和以替换为专用指令的中间代码为优化目标的优化单元组成。该编译方法可以通过运算符定义文件分析编译源代码产生对应处理器执行的高级和专用指令,并通过扩展函数等来作出改进,而不频繁地重复编译方法本身的版本的更新。该编译方法存在的不足之处在于,只能在编译生成中间代码阶段替换定点运算的中间代码为运算符定义文件中定义的专用指令集,即只能对具备一定模式的源码操作进行指令替换,限制了可进行指令替换的运算操作的范围;不具备动态添加指令接口,只能替换源码操作为已有的指令集,限制可选的替换目标。
发明内容
本发明的目的是针对上述现有技术的问题,提供一种能根据用户提供的编译策略自动调度自定义指令集的编译器及编译方法,以解决编译器规模庞大结构复杂,对用户自定义指令集支持较差且修改困难的问题。
为实现上述目的本发明的思路是,在原有编译功能的基础上,增加获取扩展指令集的接口,读取扩展指令集文件、编译策略文件、源文件,使用递归下降法解析扩展指令集文件得到扩展指令与寄存器信息并保存在临时表中,根据编译策略中的指令匹配条件,将源代码中的特殊代码段编译为扩展指令序列,将源代码中的普通代码段编译为基础指令序列。
本发明的编译器包括输入模块、嵌入模块与编译模块,其中:
所述的输入模块用于获取一个格式为.instruction的包含扩展指令定义与寄存器器定义的指令集描述文件;使用递归下降法,分别从扩展指令定义与寄存器器定义中提取扩展指令信息与寄存器信息,将扩展指令信息保存到指令表中,将寄存器信息保存到的寄存器表中,保存的寄存器与指令信息将在后续代码生成环节参与的寄存器分配与指令调度。获取一个格式为.policy的包括指令匹配条件的编译策略文件,读取策略文件中的指令匹配条件,所述的指令匹配条件包括对基础运算与对特定运算的模式匹配,还包括对一些复杂操作的特征集合描述,通过预先设置的函数模板,根据匹配条件将每个匹配条件设置一个对应的匹配函数,并保存到函数表中;从主函数的参数列表中获取源文件的数量与路径信息,依次获取源文件。
所述的嵌入模块用于提取函数表中的所有匹配函数,匹配函数能够识别的代码类型包括高级语言源代码、中间代码、优化后的中间代码,根据匹配函数能够识别的源代码类型,将对源代码进行匹配的匹配函数嵌在词法分析阶段之前,对中间代码进行匹配的匹配函数嵌在中间代码生成阶段之后,对优化后代码进行匹配的匹配函数嵌在中间代码优化阶段之后。
所述的编译模块使用嵌入的匹配函数识别代码中的特殊代码段,代码的转换与特殊代码的识别穿插进行,用于将特殊代码段编译为扩展指令序列,将普通代码段编译为基础指令集序列。
本发明的编译方法的步骤包括如下:
步骤1,获取指令集描述文件。
输入模块提供获取扩展指令集的接口,按照指定路径获取一个格式为.instruction的包含扩展指令定义与寄存器器定义的指令集描述文件。
使用递归下降法,分别从扩展指令定义与寄存器器定义中提取扩展指令信息与寄存器信息,将扩展指令信息保存到指令表中,将寄存器信息保存到的寄存器表中,保存的寄存器与指令信息将在后续代码生成环节参与的寄存器分配与指令调度。
步骤2,获取编译策略文件。
输入模块从指定路径获取一个格式为.policy的包括指令匹配条件的编译策略文件,读取策略文件中的指令匹配条件,所述的指令匹配条件包括对基础运算的模式匹配与对特定运算的模式匹配,还包括对一些复杂操作的特征集合描述,通过预先设置的函数模板,将每个匹配条件设置一个对应的匹配函数,并保存到函数表中,该匹配函数通过模式匹配识别特殊代码段并将特殊代码代码段替换为扩展指令。
步骤3,将匹配函数嵌入编译模块。
嵌入模块提取函数表中的所有匹配函数,匹配函数能够识别的代码类型包括高级语言源代码、中间代码、优化后的中间代码,根据匹配函数能够识别的源代码类型,将对源代码进行匹配的匹配函数嵌在词法分析阶段之前,对中间代码进行匹配的匹配函数嵌在中间代码生成阶段之后,对优化代码进行匹配的匹配函数嵌在中间代码优化阶段之后。
步骤4,获取源代码文件。
输入模块从主函数的参数列表中获取源文件的数量与路径信息,依次获取源文件。
步骤5,编译代码生成目标机器指令。
编译模块使用匹配函数识别代码中的特殊代码段,代码的转换与特殊代码的识别穿插进行,将特殊代码段编译为扩展指令序列,将普通代码段编译为基础指令集序列。
本发明与现有技术相比具有如下优点:
第一,由于本发明的编译器中的输入模块提供获取扩展指令集的接口,通过获取指令集描述文件,从指令集描述文件提取扩展指令信息与寄存器信息,有效克服了现有编译技术不具备动态添加指令集的接口,编译器扩展能力不足的问题,使得本发明提高了编译器的扩展能力。
第三,由于本发明的编译器的输入模块获取编译策略文件生成匹配函数,编译器通过匹配函数识别代码中的特殊代码段,将特殊代码段编译为扩展指令序列,将普通代码段编译为基础指令集序列,克服了现有技术缺失细粒度的指令匹配功能的问题,使得本发明的指令匹配粒度细且策略可控。
第二,由于本发明的编译方法通过将匹配函数嵌入编译模块,对源代码进行识别的匹配函数嵌在词法分析阶段之前,对中间代码进行识别的匹配函数嵌在中间代码生成阶段之后,对优化代码进行识别的匹配函数嵌在中间代码优化阶段之后,有效克服了现有技术只能在编译生成中间代码阶段替换定点运算操作的中间代码为运算符定义文件中定义的专用指令集的问题,使得本发明增加了可以进行指令替换的阶段。
附图说明
图1是本发明编译器的方框图;
图2是本发明编译方法的流程图。
具体实施方式
下面结合附图对本发明做详细描述。
参照附图1,对本发明的编译器做进一步的描述。
本发明的编译器的输入模块用于获取一个格式为.instruction的包含扩展指令定义与寄存器器定义的指令集描述文件。使用递归下降法,分别从扩展指令定义与寄存器器定义中提取扩展指令信息与寄存器信息,将扩展指令信息保存到指令表中,将寄存器信息保存到的寄存器表中。获取一个格式为.policy的包括指令匹配策略的编译策略文件,读取策略文件中的指令匹配策略,将每个匹配策略设置一个对应的匹配函数,并保存到函数表中,该匹配函数通过模式匹配识别特殊代码段并将特殊代码代码段替换为扩展指令。从主函数的参数列表中获取源文件的数量与路径信息,依次获取源文件。
所述的嵌入模块用于提取函数表中的所有匹配函数,对源代码进行匹配的匹配函数嵌在词法分析阶段之前,对中间代码进行匹配的匹配函数嵌在中间代码生成阶段之后,对优化代码进行匹配的匹配函数嵌在中间代码优化阶段之后。
所述的编译模块用于识别代码中的特殊代码段,将特殊代码段编译为扩展指令序列,将普通代码段编译为基础指令集序列。
参照附图2,对本发明的编译方法的具体步骤作进一步的描述。
步骤1,获取指令集描述文件。
输入模块按照指定路径获取一个格式为.instruction的包含扩展指令定义与寄存器器定义的指令集描述文件,所述的扩展指令信息包括指令编码、汇编输出、操作的寄存器和指令的特殊属性,所述扩展寄存器信息包括寄存器类别、寄存器名和寄存器位数。
步骤2,获取指令集描述文件。
使用递归下降法,分别从扩展指令定义与寄存器器定义中提取扩展指令信息与寄存器信息,将扩展指令信息保存到指令表中,将寄存器信息保存到的寄存器表中,所述的指令表与寄存器表的结构为键值映射型数据结构,为后续模块可见的外部全局变量。
例如,一个指令集开发人员想要在可扩展的RISCV指令集目标机器添加一条浮点数乘加指令集,用来加速执行完乘法运算以后会立刻执行一条加法的浮点算法,则需要提供的指令描述文件madd.instruction应该包括一组的浮点数寄存器描述、乘加运算指令描述、与用来加载与存储浮点数寄存器的指令,通过解析madd.instruction,得到该乘加指令操作的浮点数寄存器组信息包括寄存器数量、寄存器名、寄存器别名、寄存器位数,得到的指令信息包括乘加指令的指令编码、汇编输出、操作的寄存器,这些信息被存储在临时表中供给后续的寄存器分配与指令调度阶段使用。
步骤3,获取编译策略文件。
输入模块从指定路径获取一个格式为.policy的包括指令匹配策略的编译策略文件,读取策略文件中的指令匹配条件,所述的指令匹配条件指示特殊代码类型与扩展指令相匹配,普通代码类型与基础指令集相匹配。
步骤4,解析编译策略文件。
将每个匹配策略设置一个对应的匹配函数,并保存到函数表中,该匹配函数是根据匹配策略识别特殊代码段与进行指令替换,所述的函数表的结构为数组型结构,为后续模块可见的外部全局变量。
对于步骤2示例的乘加指令扩展,对应的编译策略文件为madd.policy,在该文件中定义的乘加指令的匹配条件为,将一个浮点数乘中间指令紧接一条加法指令的中间代码{%mul=mul float%x,%y,%result=add float%mul,%z}匹配为扩展指令{addmulresult,x,y,z},编译器中预先设置一系列匹配函数模板,输入模块使用内置的函数模板为该匹配条件实例化一个匹配函数,该函数接收的参数包括从一系列源指令到替换指令的映射。
步骤5,将匹配函数嵌入编译模块。
嵌入模块提取函数表中的所有匹配函数,匹配函数能够识别的代码类型包括高级语言源代码、中间代码、优化后的中间代码,根据匹配函数能够识别的源代码类型,对源代码进行匹配的匹配函数嵌在词法分析阶段之前,对中间代码进行匹配的匹配函数嵌在中间代码生成阶段之后,对优化代码进行匹配的匹配函数嵌在中间代码优化阶段之后。
对于步骤4生成的匹配函数,匹配函数能够识别的源代码类型为静态单赋值形式的中间代码,则嵌入模块将该函数插入到中间代码生成阶段之后,该函数在中间代码生成之后与中间代码优化之前被编译器调用,识别一个浮点数乘紧接一条加法指令的中间代码,将其替换为扩展指令。
步骤6,获取源代码文件。
输入模块从主函数的参数列表中获取源文件的数量与路径信息,依次获取源文件,将源文件传递给编译模块。
步骤7,识别特殊代码段。
编译模块在执行常规的编译转换的同时,调用嵌入的匹配函数识别代码中的特殊代码段。
步骤8,编译生成目标机器码。
编译模块将特殊代码段编译为扩展指令序列,将普通代码段编译为基础指令集序列。

Claims (7)

1.一种用于可扩展指令集的编译器,包括输入模块、嵌入模块与编译模块,其特征在于,还包括输入模块与嵌入模块,其中:
所述的输入模块,用于从指定路径获取一个格式为.instruction的包含扩展指令定义与寄存器器定义的指令集描述文件;使用递归下降法,分别从扩展指令定义与寄存器器定义中提取扩展指令信息与寄存器信息,将扩展指令信息保存到指令表中,将寄存器信息保存到的寄存器表中;从指定路径获取一个格式为.policy的包括指令匹配条件的编译策略文件,读取策略文件中的指令匹配条件,将每个匹配条件设置一个对应的匹配函数,并保存到函数表中,该匹配函数通过模式匹配识别特殊代码段并将特殊代码代码段替换为扩展指令;从主函数的参数列表中获取源文件的数量与路径信息,依次获取源文件;
所述的嵌入模块,用于提取函数表中的所有匹配函数,根据匹配函数能够识别的代码类型,对源代码进行识别的匹配函数嵌在词法分析阶段之前,对中间代码进行识别的匹配函数嵌在中间代码生成阶段之后,对优化代码进行识别的匹配函数嵌在中间代码优化阶段之后
所述的编译模块,用于编译源代码与识别源代码中的特殊代码段,将特殊代码段编译为扩展指令序列,将普通代码段编译为基础指令集序列。
2.根据权利要求1所述编译器的一种用于可扩展指令集的编译方法,其特征在于,获取指令集描述文件,获取编译策略文件,将匹配函数嵌入编译模块,该方法的步骤如下:
步骤1,获取指令集描述文件:
输入模块提供获取扩展指令集的接口,从指定路径获取一个格式为.instruction的包含扩展指令定义与寄存器器定义的指令集描述文件;
使用递归下降法,分别从扩展指令定义与寄存器器定义中提取扩展指令信息与寄存器信息,将扩展指令信息保存到扩展指令表中,将寄存器信息保存到的寄存器表中;
步骤2,获取编译策略文件:
输入模块从指定路径获取一个格式为.policy的包括指令匹配条件的编译策略文件,读取策略文件中的指令匹配条件,将每个匹配条件设置一个对应的匹配函数,并保存到函数表中,该匹配函数通过模式匹配识别特殊代码段并将特殊代码代码段替换为扩展指令;
步骤3,将匹配函数嵌入编译模块:
嵌入模块提取函数表中的所有匹配函数,根据匹配函数能够识别的代码类型,对源代码进行识别的匹配函数嵌在词法分析阶段之前,对中间代码进行识别的匹配函数嵌在中间代码生成阶段之后,对优化代码进行识别的匹配函数嵌在中间代码优化阶段之后;
步骤4,获取源代码文件:
输入模块从主函数的参数列表中获取源文件的数量与路径信息,依次获取源文件;
步骤5,编译代码生成目标机器指令:
编译模块使用嵌入的匹配函数识别代码中的特殊代码段,将特殊代码段编译为扩展指令序列,将普通代码段编译为基础指令集序列。
3.根据权利要求2所述的一种用于可扩展指令集的编译方法,其特征在于,步骤1中所述的扩展指令信息包括指令编码、汇编输出、操作的寄存器和指令的特殊属性。
4.根据权利要求2所述的一种用于可扩展指令集的编译方法,其特征在于,步骤1中所述寄存器信息包括寄存器类别、寄存器名和寄存器位数。
5.根据权利要求2所述的一种用于可扩展指令集的编译方法,其特征在于,步骤1中所述的扩展指令表与寄存器表的结构为键值映射型数据结构,为后续模块可见的外部全局变量。
6.根据权利要求2所述的一种用于可扩展指令集的编译方法,其特征在于,步骤2中所述的指令匹配条件指示特殊代码类型与扩展指令相匹配,普通代码类型与基础指令集相匹配。
7.根据权利要求2所述的一种用于可扩展指令集的编译方法,其特征在于,步骤2中所述的函数表的结构为数组结构,为后续模块可见的外部全局变量。
CN201911298413.1A 2019-12-17 2019-12-17 一种用于可扩展指令集的编译器及编译方法 Active CN111078290B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911298413.1A CN111078290B (zh) 2019-12-17 2019-12-17 一种用于可扩展指令集的编译器及编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911298413.1A CN111078290B (zh) 2019-12-17 2019-12-17 一种用于可扩展指令集的编译器及编译方法

Publications (2)

Publication Number Publication Date
CN111078290A CN111078290A (zh) 2020-04-28
CN111078290B true CN111078290B (zh) 2023-03-14

Family

ID=70314869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911298413.1A Active CN111078290B (zh) 2019-12-17 2019-12-17 一种用于可扩展指令集的编译器及编译方法

Country Status (1)

Country Link
CN (1) CN111078290B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767033B (zh) * 2020-05-21 2023-08-25 江苏中科重德智能科技有限公司 用于机械臂程序开发的编程系统及功能扩展方法
CN111930359B (zh) * 2020-06-30 2023-12-22 绵阳慧视光电技术有限责任公司 一种异构嵌入式系统上进行算法开发的系统及方法
WO2022000371A1 (zh) * 2020-07-01 2022-01-06 深圳市大疆创新科技有限公司 接口生成方法、装置及计算机可读存储介质
CN112256622B (zh) * 2020-10-10 2022-12-02 天津大学 一种基于可编程逻辑阵列实现安全传输的方法
CN113050952A (zh) * 2021-04-19 2021-06-29 杭州至千哩科技有限公司 伪指令编译方法、装置、计算机设备及存储介质
CN113204349B (zh) * 2021-05-10 2023-02-03 西北大学 基于rl的超优化编译器建立、代码超优化方法及系统
CN114237612A (zh) * 2021-12-03 2022-03-25 龙芯中科技术股份有限公司 程序代码的编译方法、装置、电子设备及存储介质
CN114721720B (zh) * 2022-06-07 2022-09-02 中科亿海微电子科技(苏州)有限公司 一种指令集扩展方法、装置、电子设备及存储介质
CN116661804B (zh) * 2023-07-31 2024-01-09 珠海市芯动力科技有限公司 代码编译方法、代码编译装置、电子设备和存储介质
CN116909627B (zh) * 2023-09-13 2023-12-12 杭州笨马网络技术有限公司 一种可执行程序解析方法、装置、电子设备和存储介质
CN117215544B (zh) * 2023-11-09 2024-02-09 中国科学院软件研究所 一种智能合约专用指令集的实现及运行方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3801545B2 (ja) * 2002-08-02 2006-07-26 松下電器産業株式会社 コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
US9280326B1 (en) * 2004-05-26 2016-03-08 Synopsys, Inc. Compiler retargeting based on instruction semantic models
US8694977B2 (en) * 2011-07-15 2014-04-08 Infineon Technologies Ag Distributed compiling process with instruction signature support
US8997070B2 (en) * 2011-12-15 2015-03-31 Sap Se Extension mechanism for scripting language compiler
CN106325967B (zh) * 2015-06-30 2019-10-25 华为技术有限公司 一种硬件加速方法、编译器以及设备

Also Published As

Publication number Publication date
CN111078290A (zh) 2020-04-28

Similar Documents

Publication Publication Date Title
CN111078290B (zh) 一种用于可扩展指令集的编译器及编译方法
CN109863473B (zh) 用于样本驱动简档引导优化的方法、电子设备及电子系统
US6973644B2 (en) Program interpreter
US9081586B2 (en) Systems and methods for customizing optimization/transformation/ processing strategies
JP4157016B2 (ja) コンパイラ装置及びコンパイル方法
Rocha et al. Function merging by sequence alignment
US7356672B2 (en) Warp processor for dynamic hardware/software partitioning
Stitt et al. Binary synthesis
CN112083930A (zh) 安卓项目编译过程的优化方法
Plevyak et al. Type directed cloning for object-oriented programs
Ceng et al. C compiler retargeting based on instruction semantics models
CN103207786A (zh) 渐进式智能回溯向量化代码调优方法
CN107729118A (zh) 面向众核处理器的修改Java虚拟机的方法
CN112416313B (zh) 支持大整数数据类型和运算符的编译方法
CN116594622A (zh) 基于类型推导与数据流分析的Python程序编译方法及系统
Hohenauer et al. Retargetable code optimization with SIMD instructions
Aslam Challenges and solutions in the design of a java virtual machine for resource constrained microcontrollers
Sarkar et al. A profile guided approach to optimize branch divergence while transforming applications for gpus
Paulino et al. A Binary Translation Framework for Automated Hardware Generation
JP6897213B2 (ja) コード生成装置、コード生成方法及びコード生成プログラム
Drozdov et al. Program auto parallelizer and vectorizer implemented on the basis of the universal translation library and LLVM technology
Ambrose et al. SDG2KPN: System Dependency Graph to function-level KPN generation of legacy code for MPSoCs
Gonzalez-Alvarez et al. MInGLE: an efficient framework for domain acceleration using low-power specialized functional units
Cao et al. Compiler backend generation for application specific instruction set processors
Abe et al. A retargetable code generator for the generic intermediate language in COINS

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