From bcockburn@acorn.co.uk Tue May 11 09:35:21 1993 From: bcockburn@acorn.co.uk (Bruce Cockburn) Newsgroups: comp.sys.acorn Subject: Re: ARM-code random number generator? Date: 10 May 93 20:57:44 GMT Organization: Acorn Computers Ltd, Cambridge, England Graham, Here is one that has been published with every ARM CPU data sheet that I can remember (I think it was written by Roger Wilson). ; Enter with seed in R0 (32 bits), R1 (1 bit in R1 lsb) ; Uses R2 TST r1, r1 LSR #1 ; Top bit into carry MOVS r2, r0, RRX #23 ; 32 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 ; (Whew!) ; New seed in R0, R1 as before. Cheers, Bruce. Any views expressed are my own and are not necessarily those _--_|\ of Acorn. Any factual information is given in good faith and / \ neither I, nor Acorn can accept liability for loss or damage \_.--._/ resulting from its use. v From djaggar@armltd.uucp Wed May 12 18:10:17 1993 From: djaggar@armltd.uucp (Dave Jaggar) Newsgroups: comp.sys.acorn Subject: Re: ARM-code random number generator? Date: 11 May 93 08:48:06 GMT Organization: Advanced RISC Machines Ltd bcockburn@acorn.co.uk (Bruce Cockburn) writes: >Graham, > Here is one that has been published with every ARM CPU data sheet that I >can remember (I think it was written by Roger Wilson). > ; Enter with seed in R0 (32 bits), R1 (1 bit in R1 lsb) > ; Uses R2 > TST r1, r1 LSR #1 ; Top bit into carry > MOVS r2, r0, RRX #23 ; 32 bit rotate right Bruce You can only execute a MOVS r2, r0, RRX #23 on ARM800's graphics acceleration co-processor. The ARM core only do RRX by a single bit (encoded as ROR #0) Thus, for ARM7 and earlier processors, use MOVS r2, r0, RRX > ADC r1, r1, r1 ; Carry into lsb of R1 > EOR r2, r2, r0, LSL #12 ; (Involved!) > EOR r0, r2, r2, LSR #20 ; (Whew!) FYI : This code also appears in the latest VLSI and GEC Plessey datasheets. Dave -------------------------------------------------------------------------- Dave Jaggar Advanced RISC Machines Ltd djaggar@armltd.co.uk Swaffham Bulbeck Phone: +44 223 813 000 Ext 210 Cambridge CB5 0NA Fax: +44 223 812 800 England --------------------------------------------------------------------------