由于课程政策,CS61C的所有代码均不会在网上公开,以下仅记录完成project时的具体思路。
CS61Classify的最终目标是在Venus RISC-V模拟器上运行一个简单的ANN网络。此项目分为两个部分,part A和part B。在part A中,我们需要补充一些像矩阵乘法这样基本的函数;在part B中,我们需要将part A中实现的这些函数组合起来,加载一个已经预训练好了的网络,使用它识别MNIST数据集中的手写数字。
project要求
1.project需要我们自己写测试案例来测试代码(可以参考project提供的tester)。
2.在part A中,我们的单元测试应该100%覆盖常规代码;在part B中,应该100%覆盖read_matrix和write_matrix。
Task 0:使用abs函数熟悉整个项目的流程。包括在python代码中添加新的测试案例;使用命令行工具生成.s测试案例;
背景知识:
矩阵——使用以行为主的顺序将二维矩阵存储在一维数组中
Part A: Mathematical Functions
实现一些基本的函数,根据给出的测试用例完善测试模块。
Part B: File Operations and Main
little-endian:小端格式,低字节存放在低地址处。在文件中,文件的开始便在低地址处。
下图显示的是数字0x0A0B0C0D是如何以小端格式的形式被存储在内存中的:
问题总结
1.按部就班的完成即可,注意所谓的calling convention,将常用的变量存储在s寄存器(调用子函数前后值不会发生变化)中,临时变量存储在t寄存器中。