MIPS Psuedo随机码型发生器

时间:2019-02-06 18:48:11

标签: assembly mips

我的计算机体系结构课程有一个家庭作业问题,要求我编写基本的PRPG。

据我了解,基本概念是采用一些起始编号并将其称为种子。从那里开始,将种子平方并存储为32位字。然后,删除第8位到第23位,合并0-7和24-31位,并对其进行符号扩展。将其存储回去,增加内存计数器,然后循环直到您拥有所需数量的数字。

我的问题是关于其余位组合后中间位的“丢弃”。人们到底会怎么做?我当时在考虑进行逻辑或移位,但我不确定该如何工作。

1 个答案:

答案 0 :(得分:1)

您需要进行移位和遮罩操作。

用C语言编写,

int new, old;
int mask=0x000000ff ; // 
new =   (old & mask)            // keeps  only LS byte of old
      | ((old >> 16) & ~mask) ; // and add MSByte at position 8:15

您只需要AND,OR,NOR(以补充掩码)和移位指令即可。
最好使用SRA而不是SRL进行右移,因为您可以免费使用符号扩展名。