diff options
author | Matt Turner <mattst88@gmail.com> | 2008-01-02 03:55:22 +0000 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2008-01-02 03:55:22 +0000 |
commit | afda6f12adf869ca9b35eae215b2aa83b87de39a (patch) | |
tree | 038c98253ec35dc56aed1d5ab7abde8deb99833e /leibniz.asm |
Initial import.
git-svn-id: svn://mattst88.com/svn/x86_64-assembly/trunk@1 a323887f-d61c-418c-83a5-2e06a2a01087
Diffstat (limited to 'leibniz.asm')
-rw-r--r-- | leibniz.asm | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/leibniz.asm b/leibniz.asm new file mode 100644 index 0000000..e4f5653 --- /dev/null +++ b/leibniz.asm @@ -0,0 +1,62 @@ +format ELF64 + +extrn printf +public main + +section '.text' executable align 64 + +main: + push rbp + mov rbp,rsp + movdqa xmm6,dqword[denom] + movdqa xmm2,dqword[numer] + movdqa xmm3,dqword[add4] + movdqa xmm4,xmm2 + movdqa xmm5,dqword[zero] + mov r12,10000000 + +align 64 +top: + divpd xmm2,xmm6 + addpd xmm5,xmm2 + movdqa xmm2,xmm4 + addpd xmm6,xmm3 + divpd xmm2,xmm6 + addpd xmm5,xmm2 + movdqa xmm2,xmm4 + addpd xmm6,xmm3 + divpd xmm2,xmm6 + addpd xmm5,xmm2 + movdqa xmm2,xmm4 + addpd xmm6,xmm3 + divpd xmm2,xmm6 + addpd xmm5,xmm2 + movdqa xmm2,xmm4 + addpd xmm6,xmm3 + + sub r12,1 + jnz top + + mov r12,10000000 + movdqa xmm1,xmm5 + movdqa xmm0,xmm6 + haddpd xmm1,xmm1 + + mov eax,2 + mov edi,msg + call printf + + jmp top + + leave + + ret + +section '.data' writable align 16 + +denom: dq 1.0,3.0 +numer: dq 4.0,-4.0 +add4: dq 4.0,4.0 +zero: dq 0.0,0.0 + +msg db "1/%.0f - %50.48f",0xA,0 |