《程序分析:开胃菜》概览

《静态分析:开胃菜》概览

《程序分析:开胃菜》比高级课程《Principles of Program Analysis》更加基础。和另一本书《形式化方法:开胃菜》类似。我们使用 程序图(Program Graphs) 来模型化程序。

  1. 程序图
    • 流程内程序分析的基本思想

    • 4种经典bit-vector analysis

    • 递增框架

    • forward/backward analysis

    • leatest and greatest solutions corresponds to the partial order

  2. worklist算法,reverse postorder,strong components,natural loops
  3. 整数分析作为一个独立的程序属性分析:符号分析,常量传播,区间分析
  4. 抽象解释介绍
  5. 使用类型系统来开发信息流分析,保证软件可信性,完整性。
  6. 有效地使用Datalog来有效地表示并求解程序分析问题。

这个网站有一些在线实验可以进行测试

http://www.formalmethods.dk

我们定义一门简单的语言来作为后续分析的案例。后续的分析算法会在此语言之上。

  • 程序图上的行为 a a a:
    • a a a ::=
      • ​ x := a
      • | A[a1] := a2
      • | c?x (在信道c上输入赋值x)
      • | c?A[a] (在信道c上输入赋值给A[a])
      • | c!a (在信道c上输出变量a的值)
      • | c!A[a] (在信道c上输出变量A[a]的值)
      • | b (布尔表达式)
      • | skip
  • 跟算数表达式相关
    • a ::=
      • ​ n (整数字面量)
      • | x (普通变量)
      • | A[a0] (数组变量)
      • | a1 OPa a2
      • | -a0
      • | A# (取数组的长度)
    • OPa ::=
      • + | - | * | / | % …
  • 与逻辑表达式相关
    • b ::=
      • ​ true
      • | false
      • | a1 OPr a2
      • | b1 OPb b2
      • | ~b0 (取反)
    • OPr ::=
      • = | > | >= | …
    • OPb ::=
      • ^ | V …
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值