# CCA-GroupProject **Repository Path**: maxnirvana/cca-group-project ## Basic Information - **Project Name**: CCA-GroupProject - **Description**: Computer Constitution and Architecture group project - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-10-08 - **Last Updated**: 2022-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 2022/10/26 -张佩怡 1. 对测试程序进行了修改,进行实验二的测试。 2022/10/22 -张佩怡 1. 增加了整数溢出和地址错误的测试,分支跳转指令的测试已通过。 2022/10/22 -万李 1. 完成了所有异常处理 - 优化了异常处理逻辑 2. 修改了CP0协处理器结构 3. 完成了三个特权指令 4. 完成了两个自陷指令 5. 至此,所有57条指令已全部完成 2022/10/20 -万李 1. 修改了reg.h中的bug,该bug会导致显示命名的32个寄存器共用同一个地址,导致调用时错误的修改了zero寄存器的值,现已修复。 2. 修改了J型指令中的跳转逻辑,由于cpu-exec.c中cpu的指令逻辑为执行指令后pc+4,因此在J型指令中,为避免出现跳转地址的误差,故将跳转地址设为offset-4 3. 修改了分支跳转指令中对于offset的有符号扩展错误 2022/10/20 -张佩怡 1. 增加了BLEZ、BLTZ、BLTZAL、BGEZAL、JAL、JR、JALR指令的测试,JR、JALR指令的测试已通过。 2022/10/19 -张佩怡 1. 增加了BEQ、BNE、BGEZ、BGTZ、J指令的测试。 2. 增加了debug_test文件,方便单条指令单独测试debug。 2022/10/17 -万李 1. 增加了内存扫描功能,至此所有调试功能已实现 2. 修改了memory_test文件中的错误 2022/10/16 -张佩怡 1. 增加了SLL,SRL,SRA指令的测试,SLL和SRA指令的测试已经通过。 2. 增加了MFHI,MFLO, MTHI, MTLO指令的测试,已经通过测试。 3. 增加了访存指令的测试,lb、lh指令测试结果不符合预期要求。 2022/10/15 -张佩怡 1. 增加了三组的测试用例,分别是LUI,DIV,DIVU指令,都已通过测试。 2022/10/15 -万李 1. 尝试添加了CP0结构体,详情见TEMU/temu/include/cpu/reg.h - 在i型指令中使用了BadVAddr寄存器存放地址错例外 - 对于算术溢出,使用了Cause的ExcCode进行记录 - 对于地址错例外(读数据),使用了Cause的ExcCode进行记录 2022/10/15 -万李 1. 在UI界面加入了Restart和Rebuild功能,终于不用每次都退出重新make了!! - 🥳🥳🥳 - Restart:将载入的程序从头重新运行,不需要退出再make了 - Rebuild:在界面内可以通过修改要调试的文件来无缝编译切换,增加了调试效率 2022/10/14 -张佩怡 1. 修改了测试文件中的一些小问题 2. 更新了测试文件框架以及README文件 2022/10/14 -万李 1. 在UI界面加入了颜色 2. 对每一次寄存器或监视点数据的更新都会标黄,调试时更加醒目 3. 移除了原始的红色输出指令,替换为GUI版本的红色输出 4. 在makefile中增加了gdb调试指令 2022/10/14 -万李 1. 优化了所有r型i型指令,进行显式强制类型转换 2. 整合了所有的inst测试指令到inst_ALL.S文件中,并包含一下改动 - 1. 修改了原测试文件中对于溢出操作的问题 - 2. 修改了若干数据上的问题 - 3. 对于每一个测试点,开头有序号标注,通过的测试序号会保存在$k0寄存器中,全部通过后$k1寄存器的值会变为0x12345678 3. 增加了关于add, addi, sub指令的溢出提示语句,语句中包含造成溢出两个操作数以及按照忽略溢出的方式运算后的值,方便与测试数据进行交叉验证比对 4. 目前已通过所有现存的测试集 2022/10/13 -张佩怡 1. 增加了mult, multu, sllv, srlv, srav指令的测试文件。 2. 增加了addi, addiu, slti, sltiu, andi, ori, xori指令的测试文件。 2022/10/12 -张佩怡 1. 增加了指令add, addu, sub, subu, slt, sltu, and, nor, xor, or的测试文件 2022/10/12 -万李 1. 整合了当前各模块代码 2. 优化了部分代码的稳定性 2022/10/12 -万李 1. 虽然经历了亿点小事故,不过好在源代码被还原出来了 2. 增加了控制台模块 - 在界面内键入Ctrl+a呼出控制台界面 3. 对GUI的所有代码框架及逻辑做出优化 2022/10/12 -万李 1. 目前UI已具有的功能: - 继续执行(Continue) - 单步执行(Single Step) - 实时跟踪寄存器状态 - 实时跟踪监测点状态 - 增加或删除监视点 - 调试信息窗口 - 汇编代码窗口 2022/10/11 -杨士康 1. 终于解决冲突尝试推送 2. 单步执行和打印寄存器/监视点信息 2022/10/11 -万李 1. 增加了监视点窗口 2. 完成了监视点的添加和删除功能 3. 尝试了全新的使用逻辑 4. 对UI逻辑框架做了整体的优化 5. 注:对源代码框架有所更改,详情见TEMU/temu/src/monitor/ui.c 2022/10/11 -万李 1. 解决了开源库的命名冲突问题😡 2. 初步测试了框架稳定性 3. 加入了可调试宏 2022/10/10 -万李 1. 简略的构建了UI界面的框架 2. 粗糙的进行了接口对接 2022/10/09 -万李 1. 完成了J型指令和访存指令(未测试) 2022/10/08 -万李 1. 对gcc-4.4版本做临时更改 - 将for循环的变量声明提前 2022/10/08 -万李 1. 对指令部分增加了自定义的宏方便进行各种补位操作 2. 修改了i型指令的立即数有符号扩展逻辑 2022/10/07 -万李 1. 监视点已完成 2. 表达式求值部分已做部分测试 3. 尝试修改了logic.S文件的内容,详情见TEMU/mips_sc/src/logic.S 4. 对部分指令的溢出处理逻辑进行更改,对新的逻辑还未做测试(修改的指令:add, addi, sub) 2022/10/06 -万李 1. 指令集部分,完成了指令36条,其中: - 算术运算指令14条 - 逻辑运算指令8条 - 移位指令6条 - 分支跳转指令8条,剩余4条J型指令未完成 以上指令均未做进一步测试 2. 表达式求值已完成 表达式求值模块只做了简略的测试,未作进一步测试 3. TEMU/Makefile文件有所改动,详见Makefile文件