CN109491667A - 一种c语言编译效率优化的方法 - Google Patents

一种c语言编译效率优化的方法 Download PDF

Info

Publication number
CN109491667A
CN109491667A CN201811586280.3A CN201811586280A CN109491667A CN 109491667 A CN109491667 A CN 109491667A CN 201811586280 A CN201811586280 A CN 201811586280A CN 109491667 A CN109491667 A CN 109491667A
Authority
CN
China
Prior art keywords
node
instruction
targetconstant
nodes
language
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
Application number
CN201811586280.3A
Other languages
English (en)
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.)
Chipsea Technologies Shenzhen Co Ltd
Original Assignee
Chipsea Technologies Shenzhen 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 Chipsea Technologies Shenzhen Co Ltd filed Critical Chipsea Technologies Shenzhen Co Ltd
Priority to CN201811586280.3A priority Critical patent/CN109491667A/zh
Publication of CN109491667A publication Critical patent/CN109491667A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一种C语言编译效率优化的方法,包括如下的步骤:S1、获取每个节点中的节点信息,对节点信息进行保存;S2、根据节点中指令的引用关系,找出每个节点的前置节点和引用节点,S3、获取位于第一个节点的所有依赖节点,把第一个节点向下移动到有依赖节点时停止下沉,重复该步骤操作;S4、获取位于最后一个节点的所有依赖节点,把第一个节点向上移动到有依赖节点时停止上移,重复该步骤操作;S5、删除每个节点中的无效指令。通过对生成目标代码前的伪指进行优化,以达到减少机器码量,从而提高编译的效率。

Description

一种C语言编译效率优化的方法
技术领域
本发明涉及编译器技术领域,特别是涉及C语言的编译优化技术,具体是涉及一种C语言编译效率优化的方法。
背景技术
C语言是一种结构化语言,具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。C语言还具有效率高,可移植性强等特点,因此可以广泛的移植到了各种平台的计算机或单片机上。
编译是从源代码到能直接被计算机或虚拟机执行的目标代码的翻译过程,首先编译器进行语法分析,也就是要把那些字符串分离出来,然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,也称为OBJ文件,再经过链接器的链接就可以生成最后的EXE文件。
伪指令是所有编译器在进行词法、语法、语义分析后,生成的中间代码,中间代码与具体机器无关,最后再由中间代码生成目标机器代码。
C语言编译器的编译效率是衡量一个编译器好坏的重要指标,编译出来二进制文件越小,程序占用的ROM空间也就越小,在程序存储器空间受限的系统上面,这点非常重要,可以大大降低产品成本,提高系统性能。
发明内容
本发明的目的是提供一种C语言编译效率优化的方法,该方法是在C语言编译器从中间的伪指令在生成汇编码前,针对中间的伪指令进行优化,通过该方法其编译出来的HEX格式文档较传统的优化10%至20%,进而提高嵌入式应用程序的运行速度并能够使用节省的存储器大小来提供更丰富的功能。
本发明的是通过以下的技方案来实现的:
本发明的技术方案是提供一种C语言编译效率优化的方法,该方法包括如下的步骤:
S1、获取每个节点中的节点信息,对节点信息进行保存,其中的每个节点是指每一条伪指令,一条伪指令就是一个节点,节点信息包括有指令编号、指令的各操作数、返回值的类型、指令类型、及指令的引用关系;
S2、根据节点中指令的引用关系,找出每个节点的前置节点和引用节点,其中,前置节点是指一个节点的运行需要依赖的位于其前面的节点;引用节点是指在一个节点中引用的其它节点,两个节点相互构成为依赖节点。
S3、获取位于第一个节点的所有依赖节点,把第一个节点向下移动到有依赖节点时停止下沉,重复该步骤操作,对每个节点依次执行该步骤,这样就让每个节点的前置节点中的依赖节点尽量靠近自已;
S4、获取位于最后一个节点的所有依赖节点,把第一个节点向上移动到有依赖节点时停止上移,重复该步骤操作;在上移过程中,判断该节点的前面是否是依赖节点,如果是,则把该节点放至依赖节点的下面,也就是让自已尽量靠近到所依赖节点的下面;
S5、删除所有节点中开始的movelw指令,开始位置的movelw指令是常量移动到工作寄存器的指令,这些指令cf无效对于工作寄存器来说没有影响;
S6、删除所有节点中连续的movfw_es指令和movwf_es指令;
S7、删除所有节点中连续的movewf指令,因为两条连续的移动变量至工作寄存器,只有最后一条才会影响到工作寄存器,前面的都可以删除。
本发明的技术方案通过对生成目标代码前的伪指进行优化,以达到减少机器码量,从而提高编译的效率。
附图说明
图1是C语言编译器将源代码编译成目前代码的工作流程图。
图2是本实施例中的方法的处理流程图。
图3是本实施例中的向下移动节点的原理图。
图4是本实施例中的向上移动节点的原理图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,C语言编译器分通常分为前端和后端两个部分,前端进行词法、语法分析和语义分析,产生中间IR(指令寄存器)指令,IR指令作为后端的输入,再经过各种指令选择、指令调度、寄存器分配、指令调度及代码生成,最终生成目标代码,本方是在第二次指令调度中执行,在生成目标代码前,先对伪指令再次进行优化,来达到减少机器码量的。
以如下的一段C语言源代码为例:
按现有的C语言编译器则生成的伪指令序列为:
t26:i8=movlw-26 TargetConstant:i8-90<0>
t41:ch=CLRF-41 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-93<4>,t0
t43:ch=CLRF-43 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-94<5>,t0
t44:ch=Token Factor-44 t41,t43
t45:ch=CLRF-45 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-92<2>,t44
t47:ch=CLRF-47 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-91<3>,t44
t48:ch=Token Factor-48 t45,t47
t49:ch=CLRF-49 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-93<4>,t48
t50:ch=CLRF-50 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-94<5>,t48
t51:ch=Token Factor-51t49,t50
t30:i8=movlw-30 TargetConstant:i8-95<100>
t57:i8,i8,ch,glue=addfw_cFromLoad-57 t30,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-92<2>,t51
t58:i8,i8,ch,glue=addfw_cFromLoad-58 t26,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-91<3>,t51,t57:3
t61:ch=PIC16CycleInst-61 t57,t0
t62:ch=PIC16CycleInst-62 t58,t0
t88:ch=Token Factor-88 t61,t62,t57:2,t58:2
t64:ch=movwf_es-64 t57,TargetConstant:i8-90<0>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t88
t65:ch=movwf_es-65 t58,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t88
t66:ch=Token Factor-66 t64,t65
t73:i8,i8,ch=movfw_es-73 TargetConstant:i8-94<5>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t66
t72:i8,i8,ch=movfw_es-72 TargetConstant:i8-93<4>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t66
t77:i8,i8,ch,glue=addfw_cFromLoad-77 t72,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-92<2>,t66
t78:i8,i8,ch,glue=addfw_cFromLoad-78 t26,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-91<3>,t66,t77:3
t81:ch=PIC16CycleInst-81 t77,t0
t82:ch=PIC16CycleInst-82 t78,t0
t87:ch=Token Factor-87 t81,t82,t72:2,t77:2,t78:2
t84:ch=movwf_es-84 t77,TargetConstant:i8-90<0>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t87
t85:ch=movwf_es-85 t78,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t87
t86:ch=Token Factor-86 t84,t85
t24ch=RETUAN-24 t86
在该伪指令序列中,以t57节点为列解释如下,其中t57表示该条指令的编号,i8,i8,ch,glue表示该条指令的各操作数、返回值的类型;addfw_cFromLoad表示指令类型;t30表示该处的参数是t30的指令输出,t30是t57的前置节点;TargetConstant,TargetExternalSymbol表示参数是常量或一个外部符号;t51是t57指令的前置节点,也就是说,需要先执行t51后,才能再执行t57。
再经过代码生成后,生成的汇编代码如下:
可以看到,因为t57的计算需要用到4个参数,因些,需要把这些参数反复的从临时寄存器推到工作寄存器,并执行addwfc指令,如果某个变量正好处于工作寄存器,则不需要执行move动作,如果能够使指令的所有依赖参数能提到指令前,则可以大大减少move指令的数量。因此,本实施例就是要尽量把指令的依赖指令移动该指令的前面,但必须正确处理指令的优先级及依赖关系。
同样以上述的C语言源代码为例,本实施例是提供一种C语言编译效率优化的方法,主要包括如下步骤:
1、从伪指令序例中的每行节点中提取节点信息,节点信息保存在下面的结构体中,
struct NODEDATA
MNTYPE mtype;//节点类型
unsigned opcode;//指令操作码
unsigned mc_opcode;//MC指令操作码
int numOpts;//操作数的数量
SDNode*pOptSD[MAX_OPTS_NUM];//操作数节点
int posRefSD;//RefSD在操作数列表中的位置
SDNode*pRefSD[2];//
int posFrontSD;//FrontSD在操作数列表中的位置
SDNode*pFrontSD;
int posGlueSD;//GlueSD在操作数列表中的位置
SDNode*pGlueSD;
int posSymbol;//符合操作数的位置
int posImm;//立即数的位置
ExternalSymbolSDNode*pES;//如果是TargetExternalSynbol
GlobalAddressSDNode*Pga;//如果是TargetGlobalAddress
RegeisterSDNode*pREG;//如果是CopyToReg或CopyFromReg
int64_t constVal;//如果是TargetGlobalAddress表示位索引,如果是TargetExternalSynbol,表示此拟寄存器的索引号;
//bool is TempSym;//是否为临时符号
bool is MoveDownFail;//是否该节点尝试往下移失败,如果该节点不能往下移,那么也不允计其它节点往上移动到该节点的上面
uint32_t flags;
int moveNum;//该节点被移动了多少次
struct NODEDATA*pNext;//下一个节点
2、根据每个节点中引用关系,找出前置节点和引用节点,如代码中的t88,它的前置节点为t61,t62,t57,t58,而在t57中又引用了t30。
3、获取伪指令序列中的第一个节点的依赖节点,把第一个节点向下改变顺序,当发现有依赖节点时,停止下沉,对伪指令序列中的每个节点依次执行该操作,这样就让所有依赖节点尽量靠近自已。其原理如图3中所示,t5依赖于t1,不断的进行下沉判断,直到t1位于t5上面为止。
4、经过上述步骤处理后的伪指令序列中,获取最后一个节点的所有依赖节点,再将最后一个节点开始向上移动,判断其上方的目标节点是否为依赖节点,如果是,则把该节点放至目标节点下面,否则继续向上移动,对伪指令序列中的每个节点依次执行该操作,也就是要让该节点尽量靠近到所依赖节点的下面,其原理如图4中所示,t9依赖于t5,不断的进行上移判断,直到t9位于t5上面为止。
5、删除所有节点中开始的的movelw指令。
6、删除所有节点中连续的movfw_es指令和movwf_es指令。
7、删除所有节点中连续的movewf指令。
经过上述步骤处理后优化后的伪指序列如下:
t41:ch=CLRF-41 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-93<4>,t0
t43:ch=CLRF-43 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-94<5>,t0
t44:ch=Token Factor-44 t41,t43
t45:ch=CLRF-45 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-92<2>,t44
t47:ch=CLRF-47 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-91<3>,t44
t48:ch=Token Factor-48 t45,t47
t49:ch=CLRF-49 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-93<4>,t48
t50:ch=CLRF-50 TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-94<5>,t48
t51:ch=Token Factor-51 t49,t50
t30:i8=movlw-30 TargetConstant:i8-95<100>
t57:i8,i8,ch,glue=addfw_cFromLoad-57 t30,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-92<2>,t51
t64:ch=movwf_es-64 t57,TargetConstant:i8-90<0>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t88
t26:i8=movlw-26 TargetConstant:i8-90<0>
t58:i8,i8,ch,glue=addfw_cFromLoad-58 t26,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-91<3>,t51,t57:3
t65:ch=movwf_es-65 t58,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t88
t88:ch=Token Factor-88 t61,t62,t57:2,t58:2
t66:ch=Token Factor-66 t64,t65
t72:i8,i8,ch=movfw_es-72 TargetConstant:i8-93<4>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t66
t77:i8,i8,ch,glue=addfw_cFromLoad-77 t72,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-92<2>,t66
t84:ch=movwf_es-84 t77,TargetConstant:i8-90<0>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t87
t73:i8,i8,ch=movfw_es-73 TargetConstant:i8-94<5>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t66
t78:i8,i8,ch,glue=addfw_cFromLoad-78 t26,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-91<3>,t66,t77:3
t85:ch=movwf_es-85 t78,TargetConstant:i8-89<1>,TargetExternalSymbol:i8-25’_main.temp.’,TargetConstant:i8-89<1>,t87
t87:ch=Token Factor-87 t81,t82,t72:2,t77:2,t78:2
t86:ch=Token Factor-86 t84,t85
t24ch=RETUAN-24 t86
可以发现,中间的伪指令已减少多条,再经过代码生成后,生成的汇编代码如下:
通过比较,可以很明显的看到生成的汇编指令少了九条,本实施例仅是以简单的一小段代码为例,在实际中C语言源代码通常都是上万或几十万条,经过优化后的汇编指令能更多的提高效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种c语言编译效率优化的方法,其特征在于,包括如下的步骤:
s1、获取每个节点中的节点信息,对节点信息进行保存;
S2、根据节点中指令的引用关系,找出每个节点的前置节点和引用节点,
S3、获取位于第一个节点的所有依赖节点,把第一个节点向下移动到有依赖节点时停止下沉,重复该步骤操作;
S4、获取位于最后一个节点的所有依赖节点,把第一个节点向上移动到有依赖节点时停止上移,重复该步骤操作;
S5、删除每个节点中的无效指令。
2.根据权利要求1所述的c语言编译效率优化的方法,其特征在于,所述的节点信息包括有指令编号、指令的各操作数、返回值的类型、指令类型、及指令的引用关系。
3.根据权利要求1所述的c语言编译效率优化的方法,其特征在于,所述s5的删除每个节点中的无效指令包括如下步骤:
S51、删除所有节点中开始的movelw指令,开始位置的movelw指令是常量移动到工作寄存器的指令,这些指令cf无效对于工作寄存器来说没有影响;
S52、删除所有节点中连续的movfw_es指令和movwf_es指令;
S53、删除所有节点中连续的movewf指令,因为两条连续的移动变量至工作寄存器,只有最后一条才会影响到工作寄存器,前面的都可以删除。
4.根据权利要求1所述的C语言编译效率优化的方法,其特征在于,所述前置节点是指一个节点的运行需要依赖的位于其前面的节点;所述引用节点是指在一个节点中引用的其它节点,两个节点相互构成为依赖节点。
CN201811586280.3A 2018-12-21 2018-12-21 一种c语言编译效率优化的方法 Pending CN109491667A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811586280.3A CN109491667A (zh) 2018-12-21 2018-12-21 一种c语言编译效率优化的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811586280.3A CN109491667A (zh) 2018-12-21 2018-12-21 一种c语言编译效率优化的方法

Publications (1)

Publication Number Publication Date
CN109491667A true CN109491667A (zh) 2019-03-19

Family

ID=65711719

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811586280.3A Pending CN109491667A (zh) 2018-12-21 2018-12-21 一种c语言编译效率优化的方法

Country Status (1)

Country Link
CN (1) CN109491667A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1637708A (zh) * 2003-12-22 2005-07-13 松下电器产业株式会社 编译方法、编译装置及编译程序
CN101078994A (zh) * 2006-05-26 2007-11-28 松下电器产业株式会社 编译器装置、编译器方法和编译器程序
CN103760965A (zh) * 2014-02-21 2014-04-30 中南大学 一种能量受限嵌入式系统的算法源程序节能优化方法
CN104040492A (zh) * 2011-11-22 2014-09-10 索夫特机械公司 微处理器加速的代码优化器和依赖性重排序方法
CN104750533A (zh) * 2013-12-31 2015-07-01 上海海尔集成电路有限公司 C程序编译方法及编译器
CN105843660A (zh) * 2016-03-21 2016-08-10 同济大学 一种编译器的代码优化调度方法
CN105988855A (zh) * 2015-02-16 2016-10-05 龙芯中科技术有限公司 即时编译参数优化方法及装置
CN107608677A (zh) * 2017-09-05 2018-01-19 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备
CN108427558A (zh) * 2018-02-09 2018-08-21 芯海科技(深圳)股份有限公司 一种c编译器的窥孔优化方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1637708A (zh) * 2003-12-22 2005-07-13 松下电器产业株式会社 编译方法、编译装置及编译程序
CN101078994A (zh) * 2006-05-26 2007-11-28 松下电器产业株式会社 编译器装置、编译器方法和编译器程序
CN104040492A (zh) * 2011-11-22 2014-09-10 索夫特机械公司 微处理器加速的代码优化器和依赖性重排序方法
CN104750533A (zh) * 2013-12-31 2015-07-01 上海海尔集成电路有限公司 C程序编译方法及编译器
CN103760965A (zh) * 2014-02-21 2014-04-30 中南大学 一种能量受限嵌入式系统的算法源程序节能优化方法
CN105988855A (zh) * 2015-02-16 2016-10-05 龙芯中科技术有限公司 即时编译参数优化方法及装置
CN105843660A (zh) * 2016-03-21 2016-08-10 同济大学 一种编译器的代码优化调度方法
CN107608677A (zh) * 2017-09-05 2018-01-19 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备
CN108427558A (zh) * 2018-02-09 2018-08-21 芯海科技(深圳)股份有限公司 一种c编译器的窥孔优化方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
周志远等: "基于Java内存模型的并发程序模型检测", 《计算机工程与科学》 *
朱凯佳等: "基于GCC的VLIW编译系统研究", 《计算机工程与应用》 *
陈建华等: "一种有效的编译优化代码移动算法", 《软件学报》 *

Similar Documents

Publication Publication Date Title
US7926046B2 (en) Compiler method for extracting and accelerator template program
Goubier et al. ΣC: A programming model and language for embedded manycores
US7313773B1 (en) Method and device for simulator generation based on semantic to behavioral translation
US8336036B2 (en) System and method for translating high programming level languages code into hardware description language code
WO2021000970A1 (zh) 深度学习算法的编译方法、装置及相关产品
CN106371887B (zh) 一种msvl语言的编译系统及方法
CN106155755A (zh) 程序编译方法和程序编译器
CN108369591B (zh) 用于缓存和参数化ir的系统和方法
WO2023092626A1 (zh) 基于统一后端引擎的深度学习框架与硬件设备适配方法
WO2021000971A1 (zh) 操作数据的生成方法、装置及相关产品
Dossis Intermediate Predicate Format for Design Automation Tools.
CN102830975A (zh) 一种汇编语言到高级语言的代码转换方法和装置
CN103116493A (zh) 一种应用于粗粒度可重构阵列的自动映射方法
US8732679B2 (en) Loop transformation for computer compiler optimization
CN109799971A (zh) 一种文件生成装置和方法
US9280326B1 (en) Compiler retargeting based on instruction semantic models
CN110187886A (zh) 一种文档网站生成方法及终端
CN109313639A (zh) Dbms中进行查询执行的系统和方法
CN101604255A (zh) 中间语言的延迟跳转指令二进制翻译实现的方法
CN109491667A (zh) 一种c语言编译效率优化的方法
CN107729118A (zh) 面向众核处理器的修改Java虚拟机的方法
CN104035809B (zh) 一种基于Dalvik虚拟机JNI机制中接口函数性能优化方法
CN107203406A (zh) 一种面向分布式存储结构的处理方法
Bhatt et al. Peephole Optimization Technique for analysis and review of Compile Design and Construction
CN105893660A (zh) 一种面向符号bdd操作的cpu设计方法及计算系统

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190319