简介
P3 课上考试加的指令都比较常规,个人认为 P3 考试最大的难点就是机房的鼠标。我只能劝你手别抖了😨。
一些前置知识
开始 P3 之后,你所了解的用于 P0 的元件已经不够用了,下面列举几个新的 P3 课上常用的元件。
- Bit Adder:输入一个 n 位二进制数,输出总共有几位 1。
- Bit Finder:输入一个 n 位二进制数,输出最低位的 1 / 最高位的 1 / 最低位的 0 / 最高位的 0 的 index,还有一个输出端口代表 n 位二进制数是否含有 1。
- Shifter:输入一个数以及移动的位数,输出得到的结果。
rev
题目:将 GPR[rt] 的高 index 位翻转后放到低位,剩下的位数顺序排列到高位。然后将结果写到 GPR[rt]
解:先将 GPR[rt] 用 splitter 整体翻转,再左移 + 右移得到 0000...0 + 高 index 位反转结果,和 GPR[rt] 左移得到的剩余位数 + 000...000
相加就可以得到结果。总的来说就是位数转换都可以通过移位操作来实现。
blz
题目:大概是数出 GPR[rs]、GPR[rt] 的前导零数量,然后比大小决定 NPC 的操作,以及向 GRF 写入 tmp1 或 tmp2。
解:重点在数前导 0,用 bit Finder 时记得考虑没有 1 的情况。
lwf
题目:
|
解:重点在奇偶比较,比较最低位即可。最低位为0是偶数,为1是奇数。
github仓库里为大家提供了这三道题目的代码:
Lyrics Sharing
|