1000
Posted: Sun Nov 16, 2008 2:27 am
1000
Fan forum for Azumanga Daioh and Marty (and O&M to a limited extent)
https://www.definecynical.net/forum/
https://www.definecynical.net/forum/viewtopic.php?f=31&t=7025
Forth post!Fourth post.
Code: Select all
CODE inner_loop ( addr1 addr2 Nmax lower_limit -- ) ( f: x -- x)
fld FSIZE FSTACK_MEMORY \ f: -> fpu:
mov ecx, ebx \ ecx = r2
pop eax \ eax = Nmax
( addr1 ebx=addr2)
push edx ( addr1 edx ebx)
mov edx, 4 [esp] \ edx = addr1)
\ begin loop
L$1: fld [ebx] [edi] ( fpu: aa m[addr2]
fmul st, st(1) ( fpu: aa m2*aa)
fld [edx] [edi] ( fpu: aa m2*aa m1)
fxch st(1) ( fpu: aa m1 m2*aa)
fsubp st(1), st ( fpu: aa m1-m2*aa)
fstp [edx] [edi] ( fpu: aa)
add [edx], # 8 \ increment addresses
add [ebx], # 8
inc ecx \ add 1 to loop variable
cmp eax, ecx \ test for done
jl L$1 \ loop if I <Nmax> f:
next,
END-CODE
I GOT IT! (Not hilarious but indeed worth the bother!)Forth post!Fourth post.
(...worst pun ever?)Code: Select all
CODE inner_loop ( addr1 addr2 Nmax lower_limit -- ) ( f: x -- x) fld FSIZE FSTACK_MEMORY \ f: -> fpu: mov ecx, ebx \ ecx = r2 pop eax \ eax = Nmax ( addr1 ebx=addr2) push edx ( addr1 edx ebx) mov edx, 4 [esp] \ edx = addr1) \ begin loop L$1: fld [ebx] [edi] ( fpu: aa m[addr2] fmul st, st(1) ( fpu: aa m2*aa) fld [edx] [edi] ( fpu: aa m2*aa m1) fxch st(1) ( fpu: aa m1 m2*aa) fsubp st(1), st ( fpu: aa m1-m2*aa) fstp [edx] [edi] ( fpu: aa) add [edx], # 8 \ increment addresses add [ebx], # 8 inc ecx \ add 1 to loop variable cmp eax, ecx \ test for done jl L$1 \ loop if I <Nmax> f: next, END-CODE