「BUAA-CO」 P3课上


简介

P3 课上考试加的指令都比较常规,个人认为 P3 考试最大的难点就是机房的鼠标。我只能劝你手别抖了😨。

一些前置知识

开始 P3 之后,你所了解的用于 P0 的元件已经不够用了,下面列举几个新的 P3 课上常用的元件。

  1. Bit Adder:输入一个 n 位二进制数,输出总共有几位 1。
  2. Bit Finder:输入一个 n 位二进制数,输出最低位的 1 / 最高位的 1 / 最低位的 0 / 最高位的 0 的 index,还有一个输出端口代表 n 位二进制数是否含有 1。
  3. 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

题目:

lwf base rt offset
从offset(base)的内存中读出一个数据
判断这个数和rt的and的各个数位之和的奇偶性
奇数则存入(rt+1)mod32寄存器
偶数则存入rt寄存器

解:重点在奇偶比较,比较最低位即可。最低位为0是偶数,为1是奇数。

github仓库里为大家提供了这三道题目的代码:

Lyrics Sharing

谁与我画明月天地间
落笔话呢喃
谁遇我南山望北川
扶摇向九天
谁予我谈笑伴云轩
知己醉桌前
任我清风眠
梦回世外仙

文章作者: Cordial-Kid
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Cordial-Kid !
  目录