我试图让MIPS生成32位随机整数。我试图使用下面的代码,但是当我运行该程序时出现错误。MIPS 32位随机整数
addi $v0, $zero, 42
li $a1, 4294967295 #32 bit number
syscall
我正在使用MARS模拟器。该程序汇编没有任何错误。执行上面的系统调用时会发生问题。我会很感激任何帮助。
我试图让MIPS生成32位随机整数。我试图使用下面的代码,但是当我运行该程序时出现错误。MIPS 32位随机整数
addi $v0, $zero, 42
li $a1, 4294967295 #32 bit number
syscall
我正在使用MARS模拟器。该程序汇编没有任何错误。执行上面的系统调用时会发生问题。我会很感激任何帮助。
我认为问题在于您提供的最大数量(0xffffffff
)。尝试使用(签字)最大正值(0x7fffffff
)
addi $v0, $zero, 42
li $a1, 0x7fffffff #32 bit number (maximum 32bit signed positive number)
syscall
按OP的评论,得到一个32位的号码,你可以做的两个步骤:首先“抛硬币”获得第32位,并随机获得其他31位:
addi $v0, $zero, 42
move $a2, $zero
li $a1, 2
syscall
bnez $a0, skip
li $a2, 0x80000000
skip:
li $a1, 0x7fffffff #31 bit number (maximum 32bit signed positive number)
syscall
or $a0, $a0, $a2 # Here $a0 has a 32 bit number
并且错误是...? – 2013-03-27 18:55:05
由于它使用Java的随机数支持,它可能只支持有符号数。我会建议尝试少于2^31的数字。 – Gabe 2013-03-27 19:00:37
@MarcB它说范围的上限不能是负数。 – harbinger 2013-03-27 19:15:45