![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习
DaphneOdera17
这个作者很懒,什么都没留下…
展开
-
CS61C | Lecture11
cs61c lecture11原创 2024-07-31 21:55:56 · 160 阅读 · 0 评论 -
CS61C | Lecture 10
Lecture 10 | State registersNANDabc001011101110Signals and WaveformsClockGrouping### Circuit Delay## Circuits with State(e.g. register)![](https://img-blog.csdnimg.cn/img_convert/6be5cd6a43ee5e1b0753ea816f2d6192.pn原创 2024-07-31 21:55:04 · 182 阅读 · 0 评论 -
CS61C | Lecture 9
在替换伪指令之后,进行 2 次扫描程序,第一次记下所有标签的位置,第二次扫描是,当在分支中看到标签时,此时我们知道所有标签的位置,use label positions to generate code。函数和数据被编译进一个二进制文件(一般为 .lib),在编译链接可执行文件时,链接器从这些库中复制这些函数和数据并把他们和应用程序的其他模块组合起来生成可执行文件(.exe)使用 GCC 的时候用 -s 参数,生成 .s 文件,也就是编译器的输出,也是汇编器的输入。该阶段会包含一些伪指令。原创 2024-07-31 21:53:11 · 109 阅读 · 0 评论 -
CS61C | lecture8
在 RISC-V 中, 1 word = 4 Bytes = 32 bits.将 32 位指令分为不同段其中 opcode 为操作码,所有 R 类型寄存器的操作码都是01100112rs1 和 rs2 为源寄存器,rd 为目标寄存器对于则指令的正确编码为0021823316。原创 2024-07-31 21:52:20 · 134 阅读 · 0 评论 -
CS61C | Lecture 7
以上代码为什么使用 jr 而不是 j 是因为 sum 函数可能会在很多地方被调用,我们无法返回到一个固定的位置,所以必须要用 jr 来指定返回的位置。我们需要在调用函数之前存储旧的值,由于我们通常没有足够的寄存器来处理每个函数调用,所以将它们存储在内存中的 stack(LIFO)。由于 Stack 在内存中,所以需要有寄存器来指向它,也就是 sp(stack pointer),在 RISC-V 中,存储在。g, h, i, j 分别存储在 a0, a1, a2, a3。原创 2024-07-31 21:51:40 · 122 阅读 · 0 评论 -
CS61C | lecture6
汇编语言没有变量。它用寄存器来存储值。寄存器是固定大小的小内存(32 位或者 64 位)。可以进行读取和写入,但是有数量限制,它们很快并且耗电少。原创 2024-07-31 21:51:08 · 129 阅读 · 0 评论 -
CS61C | lecture5
用一个小数点作为边界分隔整数部分和小数部分。原创 2024-07-31 21:50:28 · 225 阅读 · 0 评论