From 952c5c128f9efaea89d41d882c4ea3ade7df4591 Mon Sep 17 00:00:00 2001 From: zakk Date: Fri, 26 Aug 2005 04:48:05 +0000 Subject: Itsa me, quake3io! git-svn-id: svn://svn.icculus.org/quake3/trunk@2 edf5b092-35ff-0310-97b2-ce42778d08ea --- lcc/x86/win32/tst/wf1.sbk | 451 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 451 insertions(+) create mode 100755 lcc/x86/win32/tst/wf1.sbk (limited to 'lcc/x86/win32/tst/wf1.sbk') diff --git a/lcc/x86/win32/tst/wf1.sbk b/lcc/x86/win32/tst/wf1.sbk new file mode 100755 index 0000000..df5688a --- /dev/null +++ b/lcc/x86/win32/tst/wf1.sbk @@ -0,0 +1,451 @@ +.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 +mov dword ptr (-24)[ebp],0 +mov dword ptr (_next),0 +jmp L3 +L2: +lea edi,(-24)[ebp] +push edi +lea edi,(-20)[ebp] +push edi +call _lookup +add esp,8 +inc dword ptr [eax] +L3: +lea edi,(-20)[ebp] +push edi +call _getword +add esp,4 +cmp eax,0 +jne L2 +mov edi,dword ptr (-24)[ebp] +push edi +call _tprint +add esp,4 +mov eax,0 +L1: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +public _err +_err: +push ebx +push esi +push edi +push ebp +mov ebp,esp +mov edi,dword ptr (20)[ebp] +push edi +lea edi,(L6) +push edi +call _printf +add esp,8 +push 1 +call _exit +add esp,4 +mov eax,0 +L5: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +public _getword +_getword: +push ebx +push esi +push edi +push ebp +mov ebp,esp +sub esp,8 +L8: +L9: +call _getchar +add esp,0 +mov dword ptr (-4)[ebp],eax +cmp eax,-1 +je L11 +mov edi,dword ptr (-4)[ebp] +push edi +call _isletter +add esp,4 +cmp eax,0 +je L8 +L11: +mov edi,dword ptr (20)[ebp] +mov dword ptr (-8)[ebp],edi +jmp L15 +L12: +mov edi,dword ptr (-8)[ebp] +lea esi,(1)[edi] +mov dword ptr (-8)[ebp],esi +mov esi,dword ptr (-4)[ebp] +mov ebx,esi +mov byte ptr [edi],bl +L13: +call _getchar +add esp,0 +mov dword ptr (-4)[ebp],eax +L15: +mov edi,dword ptr (-4)[ebp] +push edi +call _isletter +add esp,4 +mov dword ptr (-4)[ebp],eax +cmp eax,0 +jne L12 +mov edi,dword ptr (-8)[ebp] +mov byte ptr [edi],0 +mov edi,dword ptr (-8)[ebp] +mov esi,dword ptr (20)[ebp] +cmp edi,esi +jbe L16 +mov eax,1 +jmp L7 +L16: +mov eax,0 +L7: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +public _isletter +_isletter: +push ebx +push esi +push edi +push ebp +mov ebp,esp +mov edi,dword ptr (20)[ebp] +cmp edi,65 +jl L19 +cmp edi,90 +jg L19 +add dword ptr (20)[ebp],32 +L19: +mov edi,dword ptr (20)[ebp] +cmp edi,97 +jl L21 +cmp edi,122 +jg L21 +mov eax,dword ptr (20)[ebp] +jmp L18 +L21: +mov eax,0 +L18: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +public _lookup +_lookup: +push ebx +push esi +push edi +push ebp +mov ebp,esp +sub esp,4 +mov edi,dword ptr (24)[ebp] +mov edi,dword ptr [edi] +cmp edi,0 +je L24 +mov edi,dword ptr (24)[ebp] +mov edi,dword ptr [edi] +mov edi,dword ptr (12)[edi] +push edi +mov edi,dword ptr (20)[ebp] +push edi +call _strcmp +add esp,8 +mov dword ptr (-4)[ebp],eax +cmp dword ptr (-4)[ebp],0 +jge L26 +mov edi,dword ptr (24)[ebp] +mov edi,dword ptr [edi] +lea edi,(4)[edi] +push edi +mov edi,dword ptr (20)[ebp] +push edi +call _lookup +add esp,8 +mov edi,eax +jmp L23 +L26: +cmp dword ptr (-4)[ebp],0 +jle L28 +mov edi,dword ptr (24)[ebp] +mov edi,dword ptr [edi] +lea edi,(8)[edi] +push edi +mov edi,dword ptr (20)[ebp] +push edi +call _lookup +add esp,8 +mov edi,eax +jmp L23 +L28: +mov edi,dword ptr (24)[ebp] +mov eax,dword ptr [edi] +jmp L23 +L24: +cmp dword ptr (_next),2000 +jl L30 +lea edi,(L32) +push edi +call _err +add esp,4 +L30: +mov edi,dword ptr (_next) +sal edi,4 +mov dword ptr (_words)[edi],0 +mov edi,dword ptr (_next) +sal edi,4 +mov dword ptr (_words+8)[edi],0 +mov dword ptr (_words+4)[edi],0 +mov edi,dword ptr (20)[ebp] +push edi +call _strlen +add esp,4 +lea edi,(1)[eax] +push edi +call _malloc +add esp,4 +mov esi,dword ptr (_next) +sal esi,4 +mov dword ptr (_words+12)[esi],eax +mov edi,dword ptr (_next) +sal edi,4 +mov edi,dword ptr (_words+12)[edi] +cmp edi,0 +jne L36 +lea edi,(L39) +push edi +call _err +add esp,4 +L36: +mov edi,dword ptr (20)[ebp] +push edi +mov edi,dword ptr (_next) +sal edi,4 +mov edi,dword ptr (_words+12)[edi] +push edi +call _strcpy +add esp,8 +mov edi,dword ptr (_next) +lea esi,(1)[edi] +mov dword ptr (_next),esi +sal edi,4 +lea edi,(_words)[edi] +mov esi,dword ptr (24)[ebp] +mov dword ptr [esi],edi +mov eax,edi +L23: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +public _tprint +_tprint: +push ebx +push esi +push edi +push ebp +mov ebp,esp +mov edi,dword ptr (20)[ebp] +cmp edi,0 +je L42 +mov edi,dword ptr (20)[ebp] +mov edi,dword ptr (4)[edi] +push edi +call _tprint +add esp,4 +mov edi,dword ptr (20)[ebp] +mov esi,dword ptr (12)[edi] +push esi +mov edi,dword ptr [edi] +push edi +lea edi,(L44) +push edi +call _printf +add esp,12 +mov edi,dword ptr (20)[ebp] +mov edi,dword ptr (8)[edi] +push edi +call _tprint +add esp,4 +L42: +mov eax,0 +L41: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +public _strcmp +_strcmp: +push ebx +push esi +push edi +push ebp +mov ebp,esp +jmp L47 +L46: +mov edi,dword ptr (20)[ebp] +lea esi,(1)[edi] +mov dword ptr (20)[ebp],esi +movsx edi,byte ptr [edi] +cmp edi,0 +jne L49 +mov eax,0 +jmp L45 +L49: +inc dword ptr (24)[ebp] +L47: +mov edi,dword ptr (20)[ebp] +movsx edi,byte ptr [edi] +mov esi,dword ptr (24)[ebp] +movsx esi,byte ptr [esi] +cmp edi,esi +je L46 +mov edi,dword ptr (20)[ebp] +movsx edi,byte ptr [edi] +cmp edi,0 +jne L51 +mov eax,-1 +jmp L45 +L51: +mov edi,dword ptr (24)[ebp] +movsx edi,byte ptr [edi] +cmp edi,0 +jne L53 +mov eax,1 +jmp L45 +L53: +mov edi,dword ptr (20)[ebp] +movsx edi,byte ptr [edi] +mov esi,dword ptr (24)[ebp] +movsx esi,byte ptr [esi] +mov eax,edi +sub eax,esi +L45: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +_TEXT ends +extrn _strcpy:near +_TEXT segment +_TEXT ends +extrn _strlen:near +_TEXT segment +_TEXT ends +extrn _malloc:near +_TEXT segment +_TEXT ends +extrn _getchar:near +_TEXT segment +_TEXT ends +extrn _exit:near +_TEXT segment +_TEXT ends +extrn _printf:near +_TEXT segment +_TEXT ends +_DATA segment +public _next +align 4 +_next label byte +db 4 dup (0) +public _words +align 4 +_words label byte +db 32000 dup (0) +_DATA ends +_TEXT segment +align 1 +L44 label byte +db 37 +db 100 +db 9 +db 37 +db 115 +db 10 +db 0 +align 1 +L39 label byte +db 111 +db 117 +db 116 +db 32 +db 111 +db 102 +db 32 +db 119 +db 111 +db 114 +db 100 +db 32 +db 115 +db 116 +db 111 +db 114 +db 97 +db 103 +db 101 +db 0 +align 1 +L32 label byte +db 111 +db 117 +db 116 +db 32 +db 111 +db 102 +db 32 +db 110 +db 111 +db 100 +db 101 +db 32 +db 115 +db 116 +db 111 +db 114 +db 97 +db 103 +db 101 +db 0 +align 1 +L6 label byte +db 63 +db 32 +db 37 +db 115 +db 10 +db 0 +_TEXT ends +end -- cgit v1.2.3