207k views
3 votes
Write a program in C and in MIPS assembly language program that generates pseudorandom 32 bit numbers using a linear feedback shift register.

1 Answer

3 votes

Final answer:

To generate pseudorandom 32-bit numbers using a linear feedback shift register, you can use bitwise operators and a seed value in both C and MIPS assembly language. Example code for both languages is provided.

Step-by-step explanation:

To generate pseudorandom 32-bit numbers using a linear feedback shift register in C language, you can use bitwise operators and a seed value. Here's an example:

#include <stdio.h>

unsigned int lfsr = 0xACE1u;

unsigned int rand()
(bit << 15);

return lfsr;


int main()
{
int i;
for (i = 0; i < 10; i++)
printf("%u\\", rand());
return 0;
}

To implement the same algorithm in MIPS assembly language, you need to use the shift and xor instructions. Here's an example:

.data
rand_seed: .word 0xACE1

.text
.global main

main:
addi $t0, $zero, 10
addi $t1, $zero, 0

loop:
beqz $t0, exit
addi $t0, $t0, -1

lw $t2, rand_seed
srl $t3, $t2, 0
srl $t4, $t2, 2
srl $t5, $t2, 3
srl $t6, $t2, 5

xor $t7, $t3, $t4
xor $t8, $t7, $t5
xor $t9, $t8, $t6

sll $t9, $t9, 15
srl $t2, $t2, 1
or $t2, $t2, $t9

sw $t2, rand_seed

li $v0, 1
move $a0, $t2
syscall

j loop

exit:
li $v0, 10
syscall
User Rickythefox
by
7.5k points