[发明专利]支持大整数数据类型和运算符的编译方法有效
申请号: | 201910782836.4 | 申请日: | 2019-08-23 |
公开(公告)号: | CN112416313B | 公开(公告)日: | 2022-07-12 |
发明(设计)人: | 方燕飞;杨小川;文延华;董恩铭;李雁冰;何王全 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 王健 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 支持 整数 数据类型 运算 编译 方法 | ||
1.一种支持大整数数据类型和运算符的编译方法,其特征在于:基于GCC编译器,包括以下步骤:
对GCC编译器做如下配置:
扩展GCC编译器内部预定义宏,增加大整数数据类型的预定义宏,新增编译器内部头文件完成大整数类型的声明,以及在大整数声明语句中使用关键字__attribute__为大整数类型新增了ccc_bint类型的属性,该ccc_bint类型属于大整数数据类型特有的标志,在后续编译器分析过程中,将通过识别该属性进行相应的语法分析与语义转换;
增加大整数输出语句的转换功能:通过逐一分析语句中要打印的变量是否为大整数数据类型,如果是,则将该变量修改为该变量的地址,并在其后追加大整数长度作为打印参数,并在分析结束后将普通打印函数调用替换为大整数打印函数;如果所有要打印的变量均不为大整数类型,则编译器使用常规编译方法编译处理其他非大整数相关的代码;建立大整数数据类型预定义宏描述规则;
扩展GCC编译器的关键字,增加大整数数据类型关键字ccc_bint,并利用编译器的attribute机制来设置大整数类型属性;
扩展GCC编译器前端,增加对大整数数据类型关键字ccc_bint的识别,使得编译器在词法分析阶段可以通过大整数数据类型相关程序的词法分析;
扩展GCC编译器前端,增加对大整数数据类型关键字表达式的语法分析操作,使得编译器为大整数数据类型关键字相关的赋值表达式、运算表达式、初始化表达式进行正确的语法分析,此语法分析操作进一步包括以下步骤:
S1、根据是否存在大整数数据类型关键字ccc_bint声明,判断是否为大整数变量的初始化语句,如果是,采用编译器原有的数组初始化方法编译处理大整数初始化语句,否则,执行下一步;
S2、根据赋值语句中左值是否为大整数数据类型,判断是否包含大整数类赋值表达式,如果是,则编译生成大整数赋值处理库函数调用语句,否则,执行下一步;
S3、根据运算表达式的运算符左右两个操作数的数据类型,判断是否为大整数类运算表达式,如果是,编译生成大整数运算的库函数调用语句,否则,执行下一步;
S4、通过逐一分析语句中要打印的变量,判断是否为大整数数据类型,如果是则将该变量修改为该变量的地址,并在其后追加大整数长度作为打印参数,并在分析结束后将普通打印函数调用替换为大整数打印函数;如果所有要打印的变量均不为大整数类型,则编译器使用常规编译方法编译处理其他非大整数相关的代码;
GCC编译器对源程序预处理阶段:处理扩展的编译器内部头文件,生成大整数相关的类型定义;
GCC编译器识别大整数数据类型关键字ccc_bint,并作为大整数数据类型属性通过词法分析;
GCC编译器根据所述语法分析操作对遇到的赋值语句、类型转换语句、运算语句,打印语句进行语法规则判断;
中间代码生成,增加对大整数运算的优化编译处理;
目标代码生成;
可执行代码。
2.根据权利要求1所述的支持大整数数据类型和运算符的编译方法,其特征在于:所述大整数数据类型为1024bit、2048bit或者4096bit的大整数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910782836.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:水质除臭剂及其制造方法
- 下一篇:一种用于泛在电力物联网的身份保护策略