安全C规范语言SCSL使用手册.pdf

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

安全C的规范语言SCSL使用手册

(版本V1.1)

安徽中科国创高可信软件有限公司

Copyright©2017-2021版权所有

前言

本手册是安全C语言的规范语言SCSL(SafeCSpecificationLanguage)的参考手册,

用于安全C语言程序功能的形式化描述。该手册供熟悉ISOC编程语言,了解安全C语言

[8],并准备使用安全C语言程序的自动验证工具--科创验证器进行程序验证的软件技术人员

参考学习。

SCSL是安全C语言的行为接口规范语言(behavioralinterfacespecificationlanguages),

可用来编写程序标注。程序标注加在程序注释中,用来描述源代码的行为性质,因此SCSL

简称为标注语言。该语言的设计参考了ACSL语言(ANSI/ISOCSpecificationLanguage)[1],

也体现出了中国科学技术大学计算机学院相关实验室的研究成果[2,3,5]。

源文件中很多地方都有标注,这些标注是对相关程序片段行为的描述,它们综合起来就

构成程序行为的描述。从宏观上看,标注分成两大部分:全局标注和语句标注。

全局标注主要有下面几种。

1.函数协议描述函数的行为。

2.类型不变式描述结构体和共用体等类型的不变性。

3.变量不变式,描述外部变量,静态外部变量和静态局部变量的不变性。

4.全局逻辑声明逻辑的常量、类型、变量、函数、谓词及引理等的定义或声明。

语句标注有下面几种。

1.程序点断言描述该程序点状态必须满足的断言。

2.循环标注循环标注有循环不变式和循环变式,分别描述循环的不变行为和循环结

束的判定条件。

3.幽灵代码幽灵代码是仅能出现在标注中的C语言代码,可以是幽灵变量声明、结

构体的幽灵域声明、幽灵赋值语句、幽灵条件语句和幽灵循环语句等。幽灵语句只能修改幽

灵变量,不能修改C程序的变量和对C程序的代码产生任何影响。幽灵变量和幽灵语句的

引入是为了书写标注的方便。

与ACSL和其他标注语言不同,SCSL特有的部分是对易变数据结构的形状标注。它

是依据形状图逻辑和形状系统[2],形状图理论的定理证明[5],以及上述全局标注和语句标

注等的设计而设计出来的。在程序验证中,形状声明标注有助于程序员在函数前后断言、循

环不变式和程序点断言中描述单态和多态命名基本形状中各节点的指针特性,还有助于程序

验证系统发现程序中的指针错误。SCSL所提供的易变数据结构的形式定义、它们的归纳引

理和非归纳引理等的描述方式,方便了操作易变数据结构的程序的形式化描述和验证。

※重要备注:在《安全C语言使用手册》[8]第三章中介绍的易变数据结构设计的形状系统,目前仅

实现了3.1节介绍的单态命名基本形状。因此本手册中有关其它形状的描述和例子仅作为参考,后续的实

现可能还会修改。

2

目录

前言2

目录3

第1章引言5

1.1标注概述5

1.2标注的语法设计6

第2章词法规则7

第3章逻辑表达式8

3.1算符优先级10

3.2语义11

3.3定型11

3.4整数算术和机器整数12

3.5实数和浮点数13

3.5.1实数与浮点数的联系与区别13

3.5.2对浮点计算程序的验证15

3.6数组和指针17

3.7结构体、共用体和数组19

3.8字符串19

第4章函数协议24

4.1内建构造\result和\old24

文档评论(0)

数据相关的文档 + 关注
实名认证
服务提供商

数学毕业,从事大数据工作十几年,涉及二三十个行业

1亿VIP精品文档

相关文档