NJU静态分析 - Lab3 - 死代码检测
分析 实验指导中的分析已经非常详尽,新增的类也没有太多难理解的地方,比如新增的If和SwitchStmt都是Stmt的实现,使用方式在Lab2中的DefinitionStmt已经体现。 实现这个Lab你需要完成两个部分,一个是将前两个Lab —— Live Variable Analysis和Constant Propagation的代码填入,并完成Solver和WorkListSolv...
分析 实验指导中的分析已经非常详尽,新增的类也没有太多难理解的地方,比如新增的If和SwitchStmt都是Stmt的实现,使用方式在Lab2中的DefinitionStmt已经体现。 实现这个Lab你需要完成两个部分,一个是将前两个Lab —— Live Variable Analysis和Constant Propagation的代码填入,并完成Solver和WorkListSolv...
分析 对于算法的分析,课程视频已经讲解地非常清晰,在此不多赘述。重点关注于代码框架的分析 pascal.taie.ir.IR 这个类的每个实例存储了一个Java方法的各种信息,例如变量、参数、语句等。由于我们目前做的是Intraprocedual-analysis,因此我们只需要关注一个IR对象中的信息,在这个Lab中,IR中最重要的信息是其参数,因为目前我们需要将函数参数的Value...
在使用jekyll的Chirpy theme构建个人博客的时候,经常需要commit和push,重复性的劳动是一件很无聊的事,于是想到可以用一个bash脚本去自动化完成这一工作。 脚本 #!/bin/bash REPO_PATH="/path/to/your/repo" LOG_FILE="/path/to/your/log/directory/blog-auto-commit.log"...
分析 第一个实验较为简单,如果先前学习过NJU编译原理,那么对活跃变量分析算法应该会较为熟悉。对于活跃变量分析,我们使用的是may-analysis,推导方向是backward,初始化时边界和非边界均初始化为空集,转换函数为OUT = gen + (IN - kill),Meet函数为取并集。 代码框架分析 本实验的难点与其说是将代码填入每一个TODO,不如说是去理解Tai-e框架。因...
One day when I was using ssh to connect my linux desktop, a message popped up: 1 device has a firmware upgrade available. Run `fwupdmgr get-upgrades` for more information. So I ran fwupdmgr get-...
有 N 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。 机器会把这 N 个任务分成若干批,每一批包含连续的若干个任务。 从时刻 0 开始,任务被分批加工,执行第 i 个任务所需的时间是 Ti。 另外,在每批任务开始前,机器需要 S 的启动时间,故执行一批任务所需的时间是启动时间 S 加上每个任务所需时间之和。 一个任务执行后,将在机器中稍作等待,直至该批任务全部执行完毕...
有 N 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。 机器会把这 N 个任务分成若干批,每一批包含连续的若干个任务。 从时刻 0 开始,任务被分批加工,执行第 i 个任务所需的时间是 Ti。 另外,在每批任务开始前,机器需要 S 的启动时间,故执行一批任务所需的时间是启动时间 S 加上每个任务所需时间之和。 一个任务执行后,将在机器中稍作等待,直至该批任务全部执行完毕...
有一个 a×b 的整数组成的矩阵,现请你从中找出一个 n×n 的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入格式 第一行为三个整数,分别表示 a,b,n 的值; 第二行至第 a+1 行每行为 b 个非负整数,表示矩阵中相应位置上的数。 输出格式 输出仅一个整数,为 a×b 矩阵中所有“n×n 正方形区域中的最大整数和最小整数的差值”的最小值。 数据范围 2≤a...
在一年前赢得了小镇的最佳草坪比赛后,FJ 变得很懒,再也没有修剪过草坪。 现在,新一轮的最佳草坪比赛又开始了,FJ 希望能够再次夺冠。 然而,FJ 的草坪非常脏乱,因此,FJ 只能够让他的奶牛来完成这项工作。 FJ 有 N 只排成一排的奶牛,编号为 1 到 N。 每只奶牛的效率是不同的,奶牛 i 的效率为 Ei。 编号相邻的奶牛们很熟悉,如果 FJ 安排超过 K 只编号连续的奶牛,...
高二数学《绿色通道》总共有 n 道题目要抄,编号 1,2,…,n,抄第 i 题要花 ai 分钟。 小 Y 决定只用不超过 t 分钟抄这个,因此必然有空着的题。 每道题要么不写,要么抄完,不能写一半。 下标连续的一些空题称为一个空题段,它的长度就是所包含的题目数。 这样应付自然会引起马老师的愤怒,最长的空题段越长,马老师越生气。 现在,小 Y 想知道他在这 t 分钟内写哪些题,才能够...