Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pix: ; rdi, rsi, rdx
- push rdx
- push rdi
- push rsi ; stack = 16 * k + 8
- rdtsc ; answer in edx:eax
- mov edi, edx
- shl rdi, 32
- add rdi, rax
- call pixtime
- pop rsi
- pop rdi
- pop rdx
- ; preserve registers
- push rbx
- push rbp
- push r12
- push r13
- push r14
- push r15
- sub rsp, 8 ; stack = 16 * k + 8
- loop_pix:
- mov rcx, 1
- xadd [rsi], rcx ; rax will equal current [rsi]
- cmp rcx, rdx ; rdx == max
- jae exit
- mov r10, rcx
- push rdi
- push rsi
- push rdx
- lea rdi, [rcx * 8]
- count_Pi rdi
- pop rdx
- pop rsi
- pop rdi
- shl r10, 2 ; multiply array index by 4
- shr rax, 32
- mov [rdi + r10], eax
- jmp loop_pix
- exit:
- rdtsc ; answer in edx:eax
- mov edi, edx
- shl rdi, 32
- add rdi, rax
- call pixtime
- add rsp, 8
- pop r15
- pop r14
- pop r13
- pop r12
- pop rbp
- pop rbx
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement