os-k/obj/kaleid/common/rand.S

53 lines
800 B
ArmAsm

.file "rand.c"
.text
.p2align 4,,15
.globl rand
.type rand, @function
rand:
.LFB2:
.cfi_startproc
movabsq $next, %rax
imulq $1103515245, (%rax), %rdx
addq $12345, %rdx
movq %rdx, (%rax)
shrq $16, %rdx
movl %edx, %eax
movl %edx, %esi
leaq (%rax,%rax,2), %rax
shrq $32, %rax
movq %rax, %rcx
movl %edx, %eax
subl %ecx, %eax
shrl %eax
addl %ecx, %eax
shrl $30, %eax
movl %eax, %ecx
sall $31, %ecx
subl %eax, %ecx
subl %ecx, %esi
movl %esi, %eax
ret
.cfi_endproc
.LFE2:
.size rand, .-rand
.p2align 4,,15
.globl srand
.type srand, @function
srand:
.LFB3:
.cfi_startproc
movabsq $next, %rax
movl %edi, %edx
movq %rdx, (%rax)
ret
.cfi_endproc
.LFE3:
.size srand, .-srand
.data
.align 8
.type next, @object
.size next, 8
next:
.quad 7756
.ident "GCC: (GNU) 7.3.0"