CO_P5
CPU 设计文档一、指令类型
解读:将指令按类型分类,并对指令按照功能划分
R类型指令
R类型指令
Op(31~26)
Rs(25~21)
Rt(20~16)
Rd(15~11)
Shamt(10~6)
Func(5~0)
Add
000000
Rs
Rt
Rd
XXXXX
100000
Sub
000000
Rs
Rt
Rd
XXXXX
100010
Jr
000000
Rs
00000
00000
00000
001000
add:sub:jr:
I类型指令
I类型指令
Op(31~26)
Rs(25~21)
Rt(20~16)
immediate or address
Ori
001101
Rs
Rt
imm16
Lui
001111
00000
Rt
imm16
Lw
100011
Rs
Rt
imm16
Sw
101011
Rs
Rt
imm16
Beq
000100
Rs
Rt
imm16
ori: lui: lw:sw:beq:
J类型指令
J类型指令
Op(31~26)
26 address
...
CO_P7
CPU 设计文档一、指令类型
解读:将指令按类型分类,并对指令按照功能划分
R类型指令
R类型指令
Op(31~26)
Rs(25~21)
Rt(20~16)
Rd(15~11)
Shamt(10~6)
Func(5~0)
Add
000000
Rs
Rt
Rd
XXXXX
100000
Sub
000000
Rs
Rt
Rd
XXXXX
100010
And
000000
Rs
Rt
Rd
00000
100100
Or
000000
Rs
Rt
Rd
00000
100101
Mult
000000
Rs
Rt
00000
00000
011000
Multu
000000
Rs
Rt
00000
00000
011001
Div
000000
Rs
Rt
00000
00000
011010
Divu
000000
Rs
Rt
00000
00000
011011
Mfhi
000000
00000
00000
Rd
00000
010000
Mflo
000000
00000
00000
Rd
00000
010010
M ...
CO_P3
CPU 设计文档一、指令类型
解读:将指令按类型分类,并对指令按照功能划分
R类型指令
R类型指令
Op(31~26)
Rs(25~21)
Rt(20~16)
Rd(15~11)
Shamt(10~6)
Func(5~0)
Add
000000
Rs
Rt
Rd
XXXXX
100000
Sub
000000
Rs
Rt
Rd
XXXXX
100010
I类型指令
I类型指令
Op(31~26)
Rs(25~21)
Rt(20~16)
immediate or address
Ori
001101
Rs
Rt
imm16
Lui
001111
00000
Rt
imm16
Lw
100011
Rs
Rt
imm16
Sw
101011
Rs
Rt
imm16
Beq
000100
Rs
Rt
imm16
J类型指令
J类型指令
Op(31~26)
26 address
j
000010
target
二、主要模块Conroller(控制器)控制信号类型及含义
Branch>
Beq 1: ...
第一单元
题意简述
形式化表达
表达式 → 空白项 [加减 空白项] 项 空白项 | 表达式 加减 空白项 项 空白项
项 → [加减 空白项] 因子 | 项 空白项 ‘*’ 空白项 因子
因子 → 变量因子 | 常数因子 | 表达式因子|求导因子
变量因子 → 幂函数 | 指数函数 | 自定义函数调用
常数因子 → 带符号的整数
表达式因子 → ‘(‘ 表达式 ‘)’ [空白项 指数]
幂函数 → 自变量 [空白项 指数]
自变量 → ‘x’
指数函数 → ‘exp’ 空白项 ‘(‘ 空白项 因子 空白项 ‘)’ [空白项 指数]
指数 → ‘^’ 空白项 [‘+’] 允许前导零的整数 (注:指数一定不是负数)
带符号的整数 → [加减] 允许前导零的整数
允许前导零的整数 → (‘0’|’1’|’2’|…|’9’){‘0’|’1’|’2’|…|’9’}
空白项 → {空白字符}
空白字符 → (空格) | \t
加减 → ‘+’ | ‘-‘
自定义函数相关(相关限制见“公测数据限制”)
自定义函数定义 → 自定义函数名 空白项 ‘(‘ 空白项 形参自变量 空白项 [‘,’ 空白项 形参 ...
第四单元
正向建模与开发概念正向建模与开发是一种自上而下的开发方式,从需求分析开始,建立模型,逐步细化,最终再根据模型实现对应的代码。
学以致用本单元以一个图书馆管理系统为背景,锻炼对程序架构的设计和抽象能力,以及UML建模能力(包括类图、状态图和顺序图)。通过理论课对UML语言及模型的解析,建立对UML的认知的同时,学习其中使用的三个模型图,掌握基本模块概念和模块关系。类图作为静态图反应整体代码架构;状态图可用来描述关键对象(BOOK)的状态以及状态转换;顺序图通过展示对象间的消息传递体现系统的运作流程。
在充分理解整个图书馆管理系统的架构和运行流程后,开始初步的构思,再将想法落于实践,展示在UML类图上。
类图
系统中必需的模块与服务对象,思考其负责的功能
主要是场所:书架,借书处,预约处,漂流处;服务对象:学生。
根据已有的功能划分决定方法种类
各模块之间的关系
需着重注意的是管理借书处,书架,预约处等场所和服务对象(学生)的控制类(Library),同时其也管理后续的漂流处。
需要判断储存信息的方式,是直接使用容器还是使用类进行封装
在每次的作业迭代当中,对于出现新的需求, ...
第三单元
测试策略黑箱测试
别称:功能测试、封闭盒测试或基于规格说明的测试
定义:测试人员不需要了解被测试对象的内部逻辑结构、内部特性或源代码,仅关注测试对象的输入和输出,检查测试对象是否按照需求规格说明书的规定正常工作。
理解:进行黑箱测试仅得到输入与输出,设计测试案例时,需要保证覆盖符合规格说明书的所有范围(包含功能、边界等),以及保证输出对应相应的输入要求。
白箱测试
别称:结构测试、透明盒测试或基于代码的测试
定义:测试人员需要了解被测试对象的内部逻辑结构、内部特性和源代码,基于这些内部信息来设计测试用例,以检查测试对象的内部结构和代码是否按预期工作
理解:进行白箱测试可得到输入与输出以及测试对象的源代码,需要了解其内部逻辑结构以及内部特性,故除了进行黑箱测试的相同测试外,还可进行依据上述信息针对性地测试,测试其逻辑结构是否正确的
单元测试
内容:针对软件的最小可测试单元(通常是代码中的一个模块、方法或类)进行测试
特性:每个单元测试间自动,独立运行,可设定条件进行针对测试
编写方法:
完成测试用例的编写,即数据生成
本课程中使用的测试框架为Junit,对不同单元根据JML规格 ...
第二单元
题目概况结合三次作业,模拟多线程实时电梯系统,模拟对象是一个类似北京航空航天大学新主楼的电梯系统,楼座内有多部电梯,电梯可以在楼座内1-11层之间运行。系统从标准输入中读入乘客请求信息(起点层,终点楼层),请求调度器会根据此时电梯运行情况(电梯所在楼层,运行方向等)将乘客请求合理分配给某部电梯,然后被分配请求的电梯会经过上下行,开关门,乘客进入/离开电梯等动作将乘客从起点层运送到终点层。请求的输入通过我们提供的输入接口来定时投放请求,直接调用官方提供的接口即可。
可以采用任何调度策略,即任意时刻,系统选择上下行动,是否在某层开关门,乘客分配给哪部电梯都可以自定义,只要保证在电梯系统运行时间不超过题目要求时间上限的前提下将所有的乘客送至目的地即可。
电梯重置接收到重置指令的电梯需要尽快停靠后完成重置动作,再投入电梯系统运行。为安全起见,电梯重置时内部不可以有乘客,且重置动作**需要时间$T_{reset}=1.2s$。
有两种重置请求:
第一类重置请求仅修改电梯参数,重置参数请求包含需要重置的电梯ID和电梯相关参数(满载人数、移动时间)。程序需要在重置完成后让电梯以新的参数运行,重置 ...
OOpre总结
架构设计
迭代调整与考虑
按照指导书要求创建Main,Adventurer,Bottle,Equipment,Food等基础类,按照属性的含义以及方法的功能放入不同的类当中,未考虑类与类之间的联系
随着指令的增加,需要更多的类来实现指令,发现类与类之间有许多重复与交叉的部分,可以通过继承与接口的方式来减少代码重写,增强类与类之间的联系
指令的实现若具有一定的复杂性,需要应用设计模式才能更为完善地实现指令,例如单例模式即可构造Store类,实现单一实例并直接访问的类,以及观察者模式,定义一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。
补充:主函数可以通过调用命令模式来实现指令,建立抽象指令,具体指令(指令对象),但未能完善。使用junit的心得体会
在使用junit单元测试时,通过输入自己的测试代码,利用Assert语句判断输出是否符合自己预期,检测代码是否正确运行,并可以通过查看类,方法,行,分支覆盖率来查看自行编写的代码是否充分测试。
直接在主函数中输入测试代码学习oopre的心得体会
以正确输出为目的:刚开始接触java语言感到陌生与害怕,并为使用新的编程 ...