lreverse

软件需求

分类 业务需求 客户对系统的高层次目标要求,定义了项目的远景和范畴 用户需求 从用户角度描述的系统功能需求与非功能需求,通常只涉及系统的外部行为而不涉及内部特性 用户需求描述了用户能使用系统来做些什么 功能需求(FR) 系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,不考虑系统内部 的实现细节 非功能性需求(NFR) 从各个角度对系统的约束和限制,...

软件开发过程

概述 黑盒过程 需求稳定,不易变化 白盒过程 需求不稳定,需要不断获取反馈 软件过程模型 定义了软件开发的具体活动以及活动间的逻辑关系 瀑布模型 鲑鱼模型:向前一阶段回溯很难 遵循过程规律,按次序进行,上一个阶段结束,下一阶段才能开始,工作以线性的方式进行 计划、需求分析、设计、编码、测试、运行维护 优点 简单、易懂、快速 为项目...

代码优化

流图 基本块 基本块是满足下列条件的最大的连续三地址指令序列(一组总是一起执行的指令) 控制流只能从基本块的第一条指令进入该块 除了基本块的最后一条指令,控制流在离开基本块之前不会跳转或者停机 基本块划分(确定首指令) 指令序列的第一个三地址指令是一个首指令 任意一个条件或无条件转移指令的目标指令是一个首指令 紧跟在一个条件或无条件转移指令之后的指令是一个首指...

二进制漏洞

缓冲区溢出 缓冲区:程序在运行前会预留的内存空间,用于临时存储I/O数据 缓冲区溢出:通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃、系统关机或使程序执行其它指令,以达到攻击的目的 栈溢出 待填充…. 堆溢出 堆是程序运行时动态分配的内存,使用完毕后需要把堆指针传给堆释放函数来回收这片内存,否则会造成内存泄露 堆结构 堆块 ...

运行存储分配

存储组织 一个目标程序运行所需的存储空间主要包括代码区、数据区 存储分配策略 静态存储分配 在编译时刻就可以确定大小的数据对象,可以在编译时刻就为它们分配存储空间 要尽可能多的将数据对象进行静态分配,因为这些对象的地址可以被编译到目标代码中 动态存储分配 对于不能在编译时完全确定数据对象的大小,需要在编译时...

中间代码生成

声明语句的翻译 主要任务:分析所声明id的种属、类型和地址,在符号表中为id建立一条记录 类型表达式:kind + type 类型的宽度:从类型表达式可以知道该类型在运行时刻所需的存储单元数量 所以,在编译时刻,可以使用类型的宽度为每一个名字分配一个相对地址 名字的类型和相对地址信息保存在相应的符号表记录中 类型表达式 基本类型表...