Assembly arm汇编代码中是否有任何特定程序接近于生成32位二进制随机数?

Assembly arm汇编代码中是否有任何特定程序接近于生成32位二进制随机数?,assembly,random,arm,vlsi,Assembly,Random,Arm,Vlsi,arm汇编代码中是否有任何特定程序接近于生成32位二进制随机数?我需要1000个程序测试用例。此链接中是PRNG(xorshift生成器)的32位ARM代码: 基本算法为NEBIT:=bit33 EOR bit20,将33位数字左移,并将NEBIT放在底部;对所有需要的新字节(即32位)执行此操作。通过最大限度地利用臂杆移位器,可以对整个操作进行紧凑编码: ; enter with seed in R0 (32 bits), R1 (1 bit in least significant bit)

arm汇编代码中是否有任何特定程序接近于生成32位二进制随机数?我需要1000个程序测试用例。

此链接中是PRNG(xorshift生成器)的32位ARM代码:

基本算法为NEBIT:=bit33 EOR bit20,将33位数字左移,并将NEBIT放在底部;对所有需要的新字节(即32位)执行此操作。通过最大限度地利用臂杆移位器,可以对整个操作进行紧凑编码:

; enter with seed in R0 (32 bits), R1 (1 bit in least significant bit)
; R2 is used as a temporary register.
; on exit the new seed is in R0 and R1 as before
; Note that a seed of 0 will always produce a new seed of 0.
; All other values produce a maximal length sequence.
;
    TST    R1, R1, LSR #1                       ; top bit into Carry
    MOVS   R2, R0, RRX                          ; 33 bit rotate right
    ADC    R1, R1, R1                           ; carry into lsb of R1
    EOR    R2, R2, R0, LSL #12                  ; (involved!)
    EOR    R0, R2, R2, LSR #20                  ; (similarly involved!)

您应该编辑您的旧问题,使其不那么宽泛。这仍然过于宽泛,答案可能仍然是“与普通rand()函数的编译器输出相同”。您没有提到任何性能或质量要求。为什么在asm中需要它?是否存在代码大小限制?(回答这里,不是关于这个问题)我需要两组1000个随机的32位数字,这样我就可以实现一个从一个数字到另一个数字的算法。这个评论并没有真正回答@PeterCordes发布的任何问题。“接近”是什么意思?如果你搜索到一个典型的随机数生成器(如谷歌或维基百科),它将“接近”。如果你真的需要的话,你可能需要做一些工作来把它转换成手臂装配。好的,潜伏者和彼得,你们都没有回答我的问题。谢谢拉尔夫。谢谢你的帮助!