CN112579059B - 支持有限域数据类型和运算符的编译方法 - Google Patents

支持有限域数据类型和运算符的编译方法 Download PDF

Info

Publication number
CN112579059B
CN112579059B CN201910927244.7A CN201910927244A CN112579059B CN 112579059 B CN112579059 B CN 112579059B CN 201910927244 A CN201910927244 A CN 201910927244A CN 112579059 B CN112579059 B CN 112579059B
Authority
CN
China
Prior art keywords
finite field
field
compiler
data type
type
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
CN201910927244.7A
Other languages
English (en)
Other versions
CN112579059A (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.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
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 Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN201910927244.7A priority Critical patent/CN112579059B/zh
Publication of CN112579059A publication Critical patent/CN112579059A/zh
Application granted granted Critical
Publication of CN112579059B publication Critical patent/CN112579059B/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/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis

Landscapes

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

Abstract

本发明公开一种支持有限域数据类型和运算符的编译方法,在GCC编译器中新增对__field关键字的支持,用于对有限域上数据类型的描述,所述__field是有限域上的数据类型,此__field类型中包含固定的两个常量成员,此两个常量成员的名字是固定的,用户通过指定此两个常量成员的值,定义一个具体的有限域类型,再使用定义的有限域类型,声明有限域上的变量;在GCC编译器中新增有限域数据类型关键字__field,扩展GCC编译器前端,增加对有限域数据类型关键字__field的支持,扩展GCC编译器前端,增加对有限域数据类型关键字表达式的语法分析和语义分析操作,使得编译器为有限域数据类型关键字相关的初始化表达式、赋值表达式、运算表达式、打印语句进行正确的分析。本发明提高用户程序中有限域运算的效率。

Description

支持有限域数据类型和运算符的编译方法
技术领域
本发明涉及一种支持有限域数据类型和运算符的编译方法,属于大规模并行系统可用性管理技术领域。
背景技术
在高性能计算领域,有限域上的运算使用广泛。目前,没有哪一门编程语言可以直接支持对有限域上数据的类型与运算符的描述。
目前,针对信息安全领域中用到的有限域类型变量的运算,一般通过使用开源的gf2x库完成,具体的编程实现方式是在程序中对有限域类型变量先分割(如以64bit为单位)后再保存到数组或者结构体中,或者直接调用专用的初始化函数来为有限域类型变量申请存储空间,与有限域相关的运算都是通过运算函数调用的形式完成的,程序员需要理解这些接口函数具体功能才能完成有限域类型变量的编程,而不能使用统一的算术运算和逻辑运算符(如+、-、*、/、==、!=等),而且在库函数的执行过程中需要动态申请和释放空间,影响程序的运行时性能。因此,已有的有限域类型变量处理方式存在变量声明和运算不够直观、程序执行性能受限等问题。
因此,如何在标准C语言中提供一种可以描述有限域上的数据类型和操作,并且能够高效完成有限域上运算的方法,成为本领域技术人员努力的方向。
发明内容
本发明的目的是提供一种支持有限域数据类型和运算符的编译方法,该编译方法能够提高用户程序中有限域运算的效率。
为达到上述目的,本发明采用的技术方案是:一种支持有限域数据类型和运算符的编译方法,在GCC编译器中新增对__field关键字的支持,用于对有限域上数据类型的描述,所述__field是有限域上的数据类型,此__field类型中包含固定的两个常量成员,此两个常量成员的名字是固定的,用户通过指定此两个常量成员的值,定义一个具体的有限域类型,再使用定义的有限域类型,声明有限域上的变量;
对GCC编译器做如下配置:
在GCC编译器中新增有限域数据类型关键字__field;
扩展GCC编译器前端,增加对有限域数据类型关键字__field的支持:即在词法分析阶段,编译器前端将用户程序中的字符序列转换为单词序列,然后逐一对单词进行分析,当编译器分析到单词”__field”时,将其识别为类型关键字,并为该类型关键字声明的变量新增”field_type”属性,该属性是属于有限域数据类型的特有标志,在后续编译器分析过程中,通过识别该属性进行相应的语法分析与语义转换;
扩展GCC编译器前端,增加对有限域数据类型关键字表达式的语法分析和语义分析操作,使得编译器为有限域数据类型关键字相关的初始化表达式、赋值表达式、运算表达式、打印语句进行正确的分析;
基于以上配置,所述支持有限域数据类型和运算符的编译方法包括以下步骤:
S1、GCC编译器对源程序预处理;
S2、GCC编译器对源程序进行词法分析,在该阶段识别有限域数据类型关键字__field,并设置有限域数据类型属性”field_type”;
S3、GCC编译器对源程序进行语法分析,对遇到的赋值语句、类型转换语句、运算语句,打印语句等进行语法规则判断;
S4、GCC编译器对源程序进行语义分析,对遇到的与有限域相关的赋值语句、类型转换语句、运算语句,打印语句等进行转换,具体步骤包括:
S41、编译器根据初始化表达式的左值是否存在有限域数据类型标志”field_type”,判断该表达式是否为有限域变量的初始化表达式,如果是,则采用编译器原有的数组初始化方法,对有限域变量进行初始化,否则,执行下一步;
S42、编译器根据赋值表达式的左值是否存在有限域数据类型标志”field_type”,判断该表达式是否为有限域变量的赋值表达式,如果是,则将该表达式转换为有限域赋值处理的库函数调用语句,否则,执行下一步;
S43、编译器根据运算表达式的运算符左右两个操作数是否均存在有限域数据类型标志”field_type”,判断该运算表达式是否为有限域变量的运算表达式,如果是,则将该表达式转换为有限域运算的库函数调用语句,否则,执行下一步;
S44、编译器逐一分析用户程序中的函数调用语句,若该函数调用语句为打印语句,则依次分析函数调用语句中要打印的变量是否为有限域数据类型,如果是,则将该变量修改为该变量的地址,并在其后追加有限域类型的长度作为打印参数,并在分析结束后将普通打印函数调用替换为有限域打印函数;如果所有要打印的变量均不为有限域数据类型,则编译器使用常规编译方法编译处理其他非有限域相关的代码;
S5、中间代码生成,增加对有限域数据类型变量运算的优化编译处理;
S6、目标代码生成;
S7、可执行代码。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明支持有限域数据类型和运算符的编译方法,其在C语言上扩展了一套能够完整描述有限域上数据类型的语法机制,包括有限域上的数据类型的扩展、运算符扩展支持、有限域上数据的初始化、输出、赋值支持,可以在语言中方便描述有限域上的数据类型及有限域上的常用运算,编程非常方便;
有限域类型数据的存储空间都是静态开辟的,相比gf2x库为有限域数据动态申请和释放空间的做法,同时结合实际运行平台,实现了更为高效的二元域运算接口,通过将有限域变量的操作转换为优化后的接口调用语句,实现了二元域上更为高效的运算;系统可以根据领域经验事先实现几种常用有限域上高效运算算法接口,以此来优化实现语言层的运算,提高用户程序中有限域运算的效率。
附图说明
附图1为本发明支持有限域数据类型和运算符的编译方法原理示意图;
附图2为本发明支持有限域数据类型和运算符的编译方法流程图。
具体实施方式
实施例:一种支持有限域数据类型和运算符的编译方法,在GCC编译器中新增对__field关键字的支持,用于对有限域上数据类型的描述,所述__field是有限域上的数据类型,此__field类型中包含固定的两个常量成员,此两个常量成员的名字是固定的,用户通过指定此两个常量成员的值,定义一个具体的有限域类型,再使用定义的有限域类型,声明有限域上的变量;
对GCC编译器做如下配置:
在GCC编译器中新增有限域数据类型关键字__field;
扩展GCC编译器前端,增加对有限域数据类型关键字__field的支持:即在词法分析阶段,编译器前端将用户程序中的字符序列转换为单词序列,然后逐一对单词进行分析,当编译器分析到单词”__field”时,将其识别为类型关键字,并为该类型关键字声明的变量新增”field_type”属性,该属性是属于有限域数据类型的特有标志,在后续编译器分析过程中,通过识别该属性进行相应的语法分析与语义转换;
扩展GCC编译器前端,增加对有限域数据类型关键字表达式的语法分析和语义分析操作,使得编译器为有限域数据类型关键字相关的初始化表达式、赋值表达式、运算表达式、打印语句进行正确的分析;
有限域操作的实现库函数:根据编译后可执行目标码所运行平台的结构和指令特点,设计并实现了有限域运算接口,这些接口在程序编译过程中被调用,以替换对有限域类型变量的初始化和运算等操作,与gf2x库中动态申请和释放空间,且没有结合运行平台特点的做法相比,更高效;
基于以上配置,所述支持有限域数据类型和运算符的编译方法包括以下步骤:
S1、GCC编译器对源程序预处理;
S2、GCC编译器对源程序进行词法分析,在该阶段识别有限域数据类型关键字__field,并设置有限域数据类型属性”field_type”;
S3、GCC编译器对源程序进行语法分析,对遇到的赋值语句、类型转换语句、运算语句,打印语句等进行语法规则判断;
S4、GCC编译器对源程序进行语义分析,对遇到的与有限域相关的赋值语句、类型转换语句、运算语句,打印语句等进行转换,具体步骤包括:
S41、编译器根据初始化表达式的左值是否存在有限域数据类型标志”field_type”,判断该表达式是否为有限域变量的初始化表达式,如果是,则采用编译器原有的数组初始化方法,对有限域变量进行初始化,否则,执行下一步;
S42、编译器根据赋值表达式的左值是否存在有限域数据类型标志”field_type”,判断该表达式是否为有限域变量的赋值表达式,如果是,则将该表达式转换为有限域赋值处理的库函数调用语句,否则,执行下一步;
S43、编译器根据运算表达式的运算符左右两个操作数是否均存在有限域数据类型标志”field_type”,判断该运算表达式是否为有限域变量的运算表达式,如果是,则将该表达式转换为有限域运算的库函数调用语句,否则,执行下一步;
S44、编译器逐一分析用户程序中的函数调用语句,若该函数调用语句为打印语句,则依次分析函数调用语句中要打印的变量是否为有限域数据类型,如果是,则将该变量修改为该变量的地址,并在其后追加有限域类型的长度作为打印参数,并在分析结束后将普通打印函数调用替换为有限域打印函数;如果所有要打印的变量均不为有限域数据类型,则编译器使用常规编译方法编译处理其他非有限域相关的代码;
S5、中间代码生成,增加对有限域数据类型变量运算的优化编译处理;
S6、目标代码生成;
S7、可执行代码。具体地,在本阶段,目标代码与根据运行平台的结构及指令特点进行优化后的有限域库文件相链接,生成更高效的可执行代码。
实施例进一步解释如下:
本发明的目的是支持用户通过简单的C语言风格的语法在C程序中描述有限域上的数据类型和操作。
本发明设计实现的有限域数据类型编译方法有以下三个特点:
1)支持任意长度的有限域类型变量,且支持的位数可以比计算机硬件所能支持的字长宽得多,如对于1024bit,2048bit,4096bit宽度的有限域,都可以直接使用本发明提供的有限域关键字进行声明。
2)通过改造GCC编译器,支持用户在程序中使用通用基础数据类型的运算符(=、+、-、*、/、%)完成有限域类型变量的运算。
3)为每个声明的有限域类型变量静态申请空间,避免了已有GF2X库等有限域库实现中因动态申请和释放空间导致的性能损失。同时,结合目标处理器的结构和指令特点,实现了更为高效的二元域上运算的接口函数,通过在编译器中将二元域上的运算符转换为优化后的二元域接口函数,可以有效提升二元域上运算的性能。
本发明采用类似C中枚举类型的风格,提供__field关键字用于有限域上数据类型的扩展。
__field是有限域上的数据类型。__field类型中包含固定的两个常量成员,常量成员的名字也是固定的,用户通过指定这两个常量成员的值,来定义一个具体的有限域类型。然后使用这个有限域类型去声明有限域上的变量。
语法:
__field usertype
{
__p=“[素数的值]”,//必须是16进制或者二进制的数字组成的字串
__poly=“[每bit表示不可约多项式的对应某次上的系数的值]” //必须是16进制或者二进制的数字组成的字串
} 变量列表;
限制与说明:
只支持对素域和二元扩域类型,不支持对素域扩域类型。
__p表示基域,__poly表示二元域上的不可约多项式;如果是素域,__poly不需要指定。
支持有限域上的模加、模减、模乘、模逆运算,相应的运算符为:+、-、*、/表示。
本发明采用”%Nx”打印格式控制符,支持有限域数据类型的输入和输出;
示例:
//定义了素域类型fp1,p的取值是0x10000000000000000000000000000000055
__field fp1 {__p=“0x10000000000000000000000000000000055”};
//定义了模二扩域上的类型fp2,不可约多项式为x^151+x^3+1
__field fp2 {__p=“2”,__poly=“0x80000000000000000000000000000000000009”};
fp1 x, y, z, w, t; //定义模P域fp1上的变量
fp2 a,b, c; //定义模2扩域fp2上的变量
x=y+z*w+1/t; //进行fp1域上的运算
printf (“x is %Nx!\n”,x);//打印fp1域上的运算结果
对GCC编译器做如下配置:
在GCC编译器中新增有限域数据类型关键字__field;
扩展GCC编译器前端,增加对有限域数据类型关键字__field的支持:即在词法分析阶段,编译器前端将用户程序中的字符序列转换为单词序列,然后逐一对单词进行分析,当编译器分析到单词“__field”时,将其识别为类型关键字,并为该类型关键字声明的变量新增“field_type”属性,该属性是属于有限域数据类型的特有标志,在后续编译器分析过程中,通过识别该属性进行相应的语法分析与语义转换;
扩展GCC编译器前端,增加对有限域数据类型关键字表达式的语法分析和语义分析操作,使得编译器为有限域数据类型关键字相关的初始化表达式、赋值表达式、运算表达式、打印语句等进行正确的分析。
有限域操作的实现库函数:根据编译后可执行目标码所运行平台的结构和指令特点,设计并实现了有限域运算接口,这些接口在程序编译过程中被调用,以替换对有限域类型变量的初始化和运算等操作,与gf2x库中动态申请和释放空间,且没有结合运行平台特点的做法相比,更高效。
包含有限域数据类型的程序主要编译处理流程如图1所示,具体包括:
1)GCC编译器对源程序预处理;
2)GCC编译器对源程序进行词法分析,在该阶段识别有限域数据类型关键字__field,并设置有限域数据类型属性;
3)GCC编译器对源程序进行语法分析,对遇到的赋值语句、类型转换语句、运算语句,打印语句等进行语法规则判断;
4)GCC编译器对源程序进行语义分析,对遇到的与有限域相关的赋值语句、类型转换语句、运算语句,打印语句等进行转换;
5)中间代码生成,增加对有限域数据类型变量运算的优化编译处理;
6)目标代码生成;
7)可执行代码。具体地,在本阶段,目标代码与根据运行平台的结构及指令特点进行优化后的有限域库文件相链接,生成更高效的可执行代码。
图2所示是编译器实现对有限域类型变量支持的具体步骤:
1)编译器根据初始化表达式的左值是否存在有限域数据类型标志“field_type”,判断该表达式是否为有限域变量的初始化表达式,如果是,则采用编译器原有的数组初始化方法,对有限域变量进行初始化,否则,执行下一步;
2)编译器根据赋值表达式的左值是否存在有限域数据类型标志“field_type”,判断该语句是否为有限域类赋值表达式,如果是,则将该表达式转换为有限域赋值处理的库函数调用语句,否则,执行下一步;
3)编译器根据运算表达式的运算符左右两个操作数是否均存在有限域数据类型标志“field_type”,判断该运算表达式是否为有限域类运算表达式,如果是,则将该表达式转换为有限域运算的库函数调用语句,否则,执行下一步;
4)编译器逐一分析用户程序中的函数调用语句,若该函数调用语句为打印语句,则依次分析函数调用语句中要打印的变量是否为有限域数据类型,如果是,则将该变量修改为该变量的地址,并在其后追加有限域类型的长度作为打印参数,并在分析结束后将普通打印函数调用替换为有限域打印函数;如果所有要打印的变量均不为有限域数据类型,则编译器使用常规编译方法编译处理其他非有限域相关的代码。
采用上述支持有限域数据类型和运算符的编译方法时,其在C语言上扩展了一套能够完整描述有限域上数据类型的语法机制,包括有限域上的数据类型的扩展、运算符扩展支持、有限域上数据的初始化、输出、赋值支持,可以在语言中方便描述有限域上的数据类型及有限域上的常用运算,编程非常方便;
有限域类型数据的存储空间都是静态开辟的,相比gf2x库为有限域数据动态申请和释放空间的做法,同时结合实际运行平台,实现了更为高效的二元域运算接口,通过将有限域变量的操作转换为优化后的接口调用语句,实现了二元域上更为高效的运算;系统可以根据领域经验事先实现几种常用有限域上高效运算算法接口,以此来优化实现语言层的运算,提高用户程序中有限域运算的效率。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
有限域:有限域也称伽罗瓦域(galois field),是仅含有限个元素的域。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

Claims (1)

1.一种支持有限域数据类型和运算符的编译方法,其特征在于:在GCC编译器中新增对__field关键字的支持,用于对有限域上数据类型的描述,所述__field是有限域上的数据类型,此__field类型中包含固定的两个常量成员,此两个常量成员的名字是固定的,用户通过指定此两个常量成员的值,定义一个具体的有限域类型,再使用定义的有限域类型,声明有限域上的变量;
对GCC编译器做如下配置:
在GCC编译器中新增有限域数据类型关键字__field;
扩展GCC编译器前端,增加对有限域数据类型关键字__field的支持:即在词法分析阶段,编译器前端将用户程序中的字符序列转换为单词序列,然后逐一对单词进行分析,当编译器分析到单词”__field”时,将其识别为类型关键字,并为该类型关键字声明的变量新增”field_type”属性,该属性是属于有限域数据类型的特有标志,在后续编译器分析过程中,通过识别该属性进行相应的语法分析与语义转换;
扩展GCC编译器前端,增加对有限域数据类型关键字表达式的语法分析和语义分析操作,使得编译器为有限域数据类型关键字相关的初始化表达式、赋值表达式、运算表达式、打印语句进行正确的分析;
基于以上配置,所述支持有限域数据类型和运算符的编译方法包括以下步骤:
S1、GCC编译器对源程序预处理;
S2、GCC编译器对源程序进行词法分析,在该阶段识别有限域数据类型关键字__field,并设置有限域数据类型属性”field_type”;
S3、GCC编译器对源程序进行语法分析,对遇到的赋值语句、类型转换语句、运算语句、打印语句进行语法规则判断;
S4、GCC编译器对源程序进行语义分析,对遇到的与有限域相关的赋值语句、类型转换语句、运算语句、打印语句进行转换,具体步骤包括:
S41、编译器根据初始化表达式的左值是否存在有限域数据类型标志”field_type”,判断该表达式是否为有限域变量的初始化表达式,如果是,则采用编译器原有的数组初始化方法,对有限域变量进行初始化,否则,执行下一步;
S42、编译器根据赋值表达式的左值是否存在有限域数据类型标志”field_type”,判断该表达式是否为有限域变量的赋值表达式,如果是,则将该表达式转换为有限域赋值处理的库函数调用语句,否则,执行下一步;
S43、编译器根据运算表达式的运算符左右两个操作数是否均存在有限域数据类型标志”field_type”,判断该运算表达式是否为有限域变量的运算表达式,如果是,则将该表达式转换为有限域运算的库函数调用语句,否则,执行下一步;
S44、编译器逐一分析用户程序中的函数调用语句,若该函数调用语句为打印语句,则依次分析函数调用语句中要打印的变量是否为有限域数据类型,如果是,则将该变量修改为该变量的地址,并在其后追加有限域类型的长度作为打印参数,并在分析结束后将普通打印函数调用替换为有限域打印函数;如果所有要打印的变量均不为有限域数据类型,则编译器使用常规编译方法编译处理其他非有限域相关的代码;
S5、中间代码生成,增加对有限域数据类型变量运算的优化编译处理;
S6、目标代码生成;
S7、可执行代码。
CN201910927244.7A 2019-09-27 2019-09-27 支持有限域数据类型和运算符的编译方法 Active CN112579059B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910927244.7A CN112579059B (zh) 2019-09-27 2019-09-27 支持有限域数据类型和运算符的编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910927244.7A CN112579059B (zh) 2019-09-27 2019-09-27 支持有限域数据类型和运算符的编译方法

Publications (2)

Publication Number Publication Date
CN112579059A CN112579059A (zh) 2021-03-30
CN112579059B true CN112579059B (zh) 2022-10-04

Family

ID=75110421

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910927244.7A Active CN112579059B (zh) 2019-09-27 2019-09-27 支持有限域数据类型和运算符的编译方法

Country Status (1)

Country Link
CN (1) CN112579059B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114217808B (zh) * 2021-04-14 2024-04-30 无锡江南计算技术研究所 一种编程语言指针类型Cache属性扩展方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196197A1 (en) * 2002-04-12 2003-10-16 Chen Fu Methods and systems for integrated scheduling and resource management for a compiler
CN109254776A (zh) * 2018-09-29 2019-01-22 深圳市雷赛控制技术有限公司 多语言代码编译方法及编译器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196197A1 (en) * 2002-04-12 2003-10-16 Chen Fu Methods and systems for integrated scheduling and resource management for a compiler
CN109254776A (zh) * 2018-09-29 2019-01-22 深圳市雷赛控制技术有限公司 多语言代码编译方法及编译器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《RS(255,223)码中乘法器的设计》;毛得明 等;《计算机测量与控制》;20081130;全文 *
《Virtual finite-state-machine architectures for fast compilation and portability》;Lu Hao 等;《2013 IEEE 24th International Conference on Application-Specific Systems, Architectures and Processors》;20131231;全文 *

Also Published As

Publication number Publication date
CN112579059A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN110187885B (zh) 一种量子程序编译的中间代码生成方法及装置
US5586328A (en) Module dependency based incremental compiler and method
US20080178149A1 (en) Inferencing types of variables in a dynamically typed language
US20060101425A1 (en) Method and apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations
WO2015078139A1 (zh) 移植方法及源到源编译器
US6934940B2 (en) Source code transformation-temporary object reduction
EP3563231A1 (en) Systems and/or methods for type inference from machine code
Khalate et al. An LLVM-based C++ compiler toolchain for variational hybrid quantum-classical algorithms and quantum accelerators
De Hoon et al. Implementing a functional spreadsheet in Clean
CN112579059B (zh) 支持有限域数据类型和运算符的编译方法
Schröer The GENTLE Compiler Construction System
KR20210120937A (ko) 딥 러닝 프레임워크 중의 모드 전환 방법, 장치, 전자 기기, 컴퓨터 저장 매체 및 컴퓨터 프로그램 제품
CN112416313B (zh) 支持大整数数据类型和运算符的编译方法
KR20080096306A (ko) 규칙에 기반하여 스케일링 쉬프트의 최적의 위치를 찾는컴파일 방법 및 시스템
JP5600301B2 (ja) システム表現およびハンドリング技術
Meyer Towards practical proofs of class correctness
US11886839B2 (en) Non-transitory computer-readable recording medium, function generation method, and information processing device
Paulweber et al. CASM-IR: uniform ASM-based intermediate representation for model specification, execution, and transformation
Seaton A programming language where the syntax and semantics are mutable at runtime
Moyen et al. Loop quasi-invariant chunk motion by peeling with statement composition
Husák et al. Optimizing transformations of dynamic languages compiled to intermediate representations
Korenkov et al. Declarative target architecture definition for data-driven development toolchain
Danilewski et al. Specialization through dynamic staging
Pahade et al. Introduction to Compiler and its Phases
Balbaert Julia 1.0 Programming: Dynamic and high-performance programming to build fast scientific applications

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