creating random integers from seed value

Hi, I'm trying to translate this code:
randomInteger =(((randomInteger * 214013) + 2531011) >> 16) & 0x7FFF ;

into assembly in order to create a random integer generator, I'm guessing I'm needing the LSR, AND or MOV instructions, but I'm not sure.

I'm in an introduction to ARM Assembly Language course, I'd appreciate any help

Parents
  • ; randomInteger =(((randomInteger * 214013) + 2531011) >> 16) & 0x7FFF ;
    
            ldr     r1, =214013
            ldr     r2, =2531011
            ldr     r3, =randomInteger
            ldr     r0, [r3]        ; load from randomInteger
            mul     r0, r1          ; *= 214013
            adds    r0, r2          ; += 2531011
            lsrs    r0, #16         ; >>= 16
            ldr     r2, =0x7FFF
            ands    r0, r2          ; &= 0x7FFF
            str     r0, [r3]        ; store to randomInteger
    ; ...
    
    ; data section
    randomInteger dcd 0x1234
    
    

Reply
  • ; randomInteger =(((randomInteger * 214013) + 2531011) >> 16) & 0x7FFF ;
    
            ldr     r1, =214013
            ldr     r2, =2531011
            ldr     r3, =randomInteger
            ldr     r0, [r3]        ; load from randomInteger
            mul     r0, r1          ; *= 214013
            adds    r0, r2          ; += 2531011
            lsrs    r0, #16         ; >>= 16
            ldr     r2, =0x7FFF
            ands    r0, r2          ; &= 0x7FFF
            str     r0, [r3]        ; store to randomInteger
    ; ...
    
    ; data section
    randomInteger dcd 0x1234
    
    

Children
More questions in this forum