【技术实现步骤摘要】
一种基于Coq的C++编译器变量作用域形式化方法
本专利技术属于计算机应用的
,具体涉及一种基于Coq的C++编译器变量作用域形式化方法。
技术介绍
自区块链和虚拟币种市场诞生以来,各种安全问题层出不穷,由于各种安全问题导致的黑客攻击引起的损失也成文了行业内的关注重点。为了保证代码安全,业界提出了多种代码检测的方式。但就EOS智能合约的形式化验证,现阶段还没有成熟的方案。出现这一现象主要是由于对工业级程序语义的形式化语义较为困难。形式语义与形式建模即为了对计算机系统的行为进行推理验证,需要对编程语言的语义进行严格的定义,使用形式模型对计算机系统的行为进行建模。虽然当前有很多项目已经实现了对以太坊的智能合约的形式化验证,但是极少有对EOS智能合约的形式化验证。这主要是由于相较于由solidity编写的以太坊智能合约,由C++编写的EOS智能合约的语法和语义更为复杂。在形式化EOS智能合约时需要实现C++特有的语法特性形式化,其中C++变量作用域的形式化验证方案目前业界还未有成熟的解决方案。
技术实现思路
本专利技术公开了一种基于Coq的C++编译器变量作用域形式化方法,目的为解决Coq解释器无法将含有变量作用域特性的代码正确解释为虚拟内存指令序列的问题。本专利技术主要通过以下技术方案实现:一种基于Coq的C++编译器变量作用域形式化方法,采用record数学模型形式化表结构,采用Inductive归纳定义形式化栈结构,采用match匹配形式化代码中引起分支的操作逻辑,采 ...
【技术保护点】
1.一种基于Coq的C++编译器变量作用域形式化方法,其特征在于,采用record数学模型形式化表结构,采用Inductive归纳定义形式化栈结构,采用match匹配形式化代码中引起分支的操作逻辑,采用Fixpoint递归函数形式化重复行为操作逻辑。/n
【技术特征摘要】
1.一种基于Coq的C++编译器变量作用域形式化方法,其特征在于,采用record数学模型形式化表结构,采用Inductive归纳定义形式化栈结构,采用match匹配形式化代码中引起分支的操作逻辑,采用Fixpoint递归函数形式化重复行为操作逻辑。
2.根据权利要求1所述的一种基于Coq的C++编译器变量作用域形式化方法,其特征在于,包括全局变量作用域表、局部变量作用域表栈结构形式化,主要包括以下步骤:
步骤S1:表值结构形式化,利用Inductive结构定义表值,dmt_init归纳子表示初始化表值,dmt_unit归纳子内部存储:虚拟内存地址、变量作用域标识符;
步骤S2:表结构形式化,利用Record数学模型模拟表结构,利用Record的directlyaccess特性形式化字典结构的hash表快速查找逻辑。
3.根据权利要求2所述的一种基于Coq的C++编译器变量作用域形式化方法,其特征在于,还包括以下步骤:
步骤S3:表栈结构形式化,利用Inductive归纳定义栈结构,通过构造dmt_genesis归纳基形式化栈底,dmt_block归纳构造子形式化栈内元素,表栈内存储:作用域表类别、函数标识符、函数虚拟内存地址、作用域表结构;
步骤S4:环境变量形式化,利用Record数学模型形式化编译器环境变量,内部定义虚拟内存、全局变量表、局部变量表栈。
4.根据权利要求2所述的一种基于Coq的C++编译器变量作用域形式化方法,其特征在于,包括步骤S5作用域表读写操作形式化,主要包括以下步骤:
步骤S5-1:作用域表读操作形式化:
S5-1-1、输入:变量作用域表、变量名;
S5-1-2、输出:变量值或异常抛出;
S5-1-3、定义形式化:读操作定义为变量名正常情况下返回变量名对应的值,输入非法变量名的情况下抛出异常;
S5-1-4、Coq形式化方法:采用match匹配形式化操作展开的两个分支,使用带有option限制的输出来形式化异常抛出操作;
步骤S5-2:作用域表写操作形式化:
S5-2-1、输入:变量作用域表、作用域表地址、待写入变量值;
S5-2-2、输出:写入后更新的变量作用域表;
S5-2-3、定义:写操作定义为返回指定地址的值更改为指定值的变量作用域表;
S5-2-4、Coq形式化方法:利用match匹配展开表结构分支,利用形式化方法S1、S2形式化全局变量作用域表结构。
5.根据权利要求2所述的一种基于Coq的C++编译器变量作用域形式化方法,其特征在于,还包括步骤S6作用域表栈操作形式化,主要包括以下步骤:
S6-1、表栈出栈操作形式化;
S6-1-1、输入:局部变量作用域表栈;
S6-1-2、输出:栈顶表出栈后的局部变量作用域表栈或异常抛出;
S6-1-3、定义:若表栈内元素大于0则移除栈顶表返回表栈,否则抛出异常;
S6-1-4、Coq形式化方法:利用match匹配形式化操作展开的两个分支,使用带有option限制的输出来形式化异常抛出操作;
S6-2、表栈入栈操作形式化:
S6-2-1、输入:局部变量作用域表栈,待入栈局部变量作用域表;
S6-2-2、输出:新表入栈后的局部变量作用域表栈;
S6-2-3、定义:将待入栈局部变量作用域表置于表栈栈顶,返回局部变量作用域表栈;
S6-2-4、Coq形式化方法:利用形式化方法S3形式化局部变量作用域表,利用match匹配展开形式化方法S3构成的形式化局部变量作用域表栈;
S6-3、栈顶表复制操作形式化:
S6-3-1、输入:待复制局部变量作用域表、待继承变量名列表;
S6-3-2、输出:复制产生的局部变量作用域表或...
【专利技术属性】
技术研发人员:雷航,王自升,李昂,杨拯,钱伟中,唐琴,曾惟如,晏昃晖,
申请(专利权)人:电子科技大学,成都互诚在线科技有限公司,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。