diff options
Diffstat (limited to 'code/tools/lcc/x86/win32/tst/cf.sbk')
-rw-r--r-- | code/tools/lcc/x86/win32/tst/cf.sbk | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/code/tools/lcc/x86/win32/tst/cf.sbk b/code/tools/lcc/x86/win32/tst/cf.sbk new file mode 100644 index 0000000..9ab4cfc --- /dev/null +++ b/code/tools/lcc/x86/win32/tst/cf.sbk @@ -0,0 +1,185 @@ +.486 +.model flat +extrn __fltused:near +extrn __ftol:near +public _main +_TEXT segment +_main: +push ebx +push esi +push edi +push ebp +mov ebp,esp +sub esp,24 +cmp dword ptr (20)[ebp],1 +jg L2 +fld dword ptr (L4) +fstp dword ptr (-16)[ebp] +jmp L3 +L2: +mov edi,dword ptr (24)[ebp] +mov edi,dword ptr (4)[edi] +push edi +call _atof +add esp,4 +fstp dword ptr (-20)[ebp] +fld dword ptr (-20)[ebp] +fdiv dword ptr (L5) +fstp dword ptr (-16)[ebp] +L3: +mov dword ptr (-4)[ebp],0 +L6: +mov edi,dword ptr (-4)[ebp] +lea esi,(1)[edi] +mov dword ptr (-4)[ebp],esi +fld dword ptr (L4) +fstp dword ptr (_f)[edi*4] +L7: +cmp dword ptr (-4)[ebp],127 +jle L6 +mov dword ptr (-8)[ebp],0 +jmp L11 +L10: +mov edi,dword ptr (-12)[ebp] +lea edi,(_f)[edi*4] +fld dword ptr [edi] +fadd dword ptr (L13) +fstp dword ptr [edi] +inc dword ptr (-8)[ebp] +L11: +call _getchar +add esp,0 +mov dword ptr (-12)[ebp],eax +cmp eax,-1 +jne L10 +lea edi,(L14) +push edi +call _printf +add esp,4 +mov dword ptr (-4)[ebp],0 +L15: +mov edi,dword ptr (-4)[ebp] +fld dword ptr (_f)[edi*4] +fstp dword ptr (-24)[ebp] +fld dword ptr (L4) +fcomp dword ptr (-24)[ebp] +fstsw ax +sahf +je L19 +fld dword ptr (-24)[ebp] +mov edi,dword ptr (-8)[ebp] +push edi +fild dword ptr 0[esp] +add esp,4 +fdivp st(1),st +fld dword ptr (-16)[ebp] +fcompp +fstsw ax +sahf +ja L19 +cmp dword ptr (-4)[ebp],32 +jg L21 +mov edi,dword ptr (-4)[ebp] +push edi +lea edi,(L23) +push edi +call _printf +add esp,8 +jmp L22 +L21: +mov edi,dword ptr (-4)[ebp] +push edi +lea edi,(L24) +push edi +call _printf +add esp,8 +L22: +fld dword ptr (L5) +mov edi,dword ptr (-4)[ebp] +fmul dword ptr (_f)[edi*4] +mov edi,dword ptr (-8)[ebp] +push edi +fild dword ptr 0[esp] +add esp,4 +fdivp st(1),st +sub esp,8 +fstp qword ptr [esp] +lea edi,(L25) +push edi +call _printf +add esp,12 +L19: +L16: +inc dword ptr (-4)[ebp] +cmp dword ptr (-4)[ebp],127 +jle L15 +mov eax,0 +L1: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +_TEXT ends +extrn _printf:near +_TEXT segment +_TEXT ends +extrn _getchar:near +_TEXT segment +_TEXT ends +extrn _atof:near +_TEXT segment +_TEXT ends +_DATA segment +public _f +align 4 +_f label byte +db 512 dup (0) +_DATA ends +_TEXT segment +align 1 +L25 label byte +db 9 +db 37 +db 46 +db 49 +db 102 +db 10 +db 0 +align 1 +L24 label byte +db 37 +db 99 +db 0 +align 1 +L23 label byte +db 37 +db 48 +db 51 +db 111 +db 0 +align 1 +L14 label byte +db 99 +db 104 +db 97 +db 114 +db 9 +db 102 +db 114 +db 101 +db 113 +db 10 +db 0 +align 4 +L13 label byte +dd 03f800000H +align 4 +L5 label byte +dd 042c80000H +align 4 +L4 label byte +dd 00H +_TEXT ends +end |