最近正在学习伯克利的CS61C这门课,其中Project2是使用RISC-V实现手写数字识别。 听起来很复杂,但做起来其实还好,主要考验的是如何高效利用寄存器,使用汇编语言编写和调用函数,如何从堆栈上手动分配内存,以及使用Venus调试汇编程序的能力。 最后,只需要把它们连接起来,就能组成一个能对手写数字进行分类的人工神经网络(ANN...
之后的RISC-V part,多多查阅RISC-V GreenCard 以及学会在UCB提供的环境venus 中debug,venus的功能很强大,有相关的文档教怎么使用,不要嫌多就草草略过,~~否则会和我一样debug很痛苦~~ 有关RISC-V的proj2,虽然说听起来很高端,“用 RISC-V 汇编编写一个神经网络,用来识别 MNIST 手写数字 ”,但其实只是写几个...
这个课用了venus这个工具充当模拟器,并且已经开源,web版本可以进行debug,并且查看各个寄存器以及内存各个地址里的值,让我对char的存放方式、endiance以及读写文件有了更直观的了解。 关于debug,首先课程里也提到了基础测试是不够的,自己多写点测试才能保证各个函数本身是没问题的,我最后写classify的时候,才发现之前测试...
UC Berkeley https://cs61c.org Overview Repositories120 Projects Packages People9 More Popular repositoriesLoading fa20-lab-starterfa20-lab-starterPublic archive C75113 su20-lab-startersu20-lab-starterPublic archive C4680 venusvenusPublic Forked fromThaumicMekanism/venus ...
我们提供了一个脚本(tools/create-test.py),它使用 Venus 来帮助您从 RISC-V 汇编生成测试电路!编写自定义测试的过程如下: 想出一个测试,并编写该测试的 RISC-V 汇编指令,将其保存在 tests/part-b/custom/inputs/ 文件夹中以 .s 结尾的文件中。该文件的名称就是测试的名称。如果有更多测试,请重复上述步骤...
我已经尝试过https://godbolt.org/和所有不同的RISC-V转换,但仍然有错误。 例如,我的C代码: #include <stdio.h> int main(){ printf("test"); return 0; } converts to: main: # @main addi sp, sp, -16 sw ra, 12(sp) # 4-byte Folded Spill ...
我尝试了https://godbolt.org/和所有不同的转换到RISC-V,但它仍然错误。 例如,我的C代码: #include <stdio.h>int main(){ printf("test"); return 0; } 转换为: main: # @main addi s
在cs61c 中使用了 venus,对应的 syscall 是 risc-v 的 ecall 指令。 调度的概念: 虚存 虚存的引入: 内存的结构: 五级流水线基于虚存的修改。 虚存总结: L18 总结: L19 虚存详解 虚存和物理内存的缩写: 地址转化: 虚存的地址表示: page table 的设计: 多层Page Table 设计: 地址转化的方法: 多层page...
venus IEEE754 Simulator SDS Handout Logic Handout State Handout Discussion hw1 hw2 Labs Lab 0: Intro, Setup Lab 1: C, CGDB Lab 2: C Memory Management, Valgrind Lab 3: RISC-V Assembly Lab 4: RISC-V Calling Convention Lab 5: Logisim Lab 6: CPU, Pipelining Lab 7: Caches Lab 8: SI...
将本地设备中的文件夹“挂载”到 Venus [1]的Web 前端,以便在浏览器 Venus 编辑器中所做的编辑反映在本地文件系统中,反之亦然。 如果不执行此步骤,那么每次关闭选项卡时,在 Venus 中创建和编辑的文件都会丢失,除非将它们复制/粘贴到本地文件。 主要过程是把有个叫做tools的文件夹复制到lab目录下,然后在该目...