diff options
Diffstat (limited to 'code/tools/lcc/x86/win32/tst/fields.sbk')
-rw-r--r-- | code/tools/lcc/x86/win32/tst/fields.sbk | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/code/tools/lcc/x86/win32/tst/fields.sbk b/code/tools/lcc/x86/win32/tst/fields.sbk new file mode 100644 index 0000000..8cf7784 --- /dev/null +++ b/code/tools/lcc/x86/win32/tst/fields.sbk @@ -0,0 +1,323 @@ +.486 +.model flat +extrn __fltused:near +extrn __ftol:near +_DATA segment +public _x +align 4 +_x label byte +dd 1 +db 2 +db 3 dup (0) +db 03H +db 040H +db 2 dup (0) +db 050H +db 6 +db 2 dup (0) +public _i +align 4 +_i label byte +dd 16 +public _y +align 4 +_y label byte +db 023H +db 3 dup (0) +db 09H +db 00H +db 00H +db 00H +public _main +_DATA ends +_TEXT segment +_main: +push ebx +push esi +push edi +push ebp +mov ebp,esp +movsx edi,byte ptr (_x+13) +push edi +mov edi,dword ptr (_x+12) +sal edi,25 +sar edi,29 +push edi +mov edi,dword ptr (_x+8) +sal edi,16 +sar edi,28 +push edi +mov edi,dword ptr (_x+8) +sal edi,20 +sar edi,20 +push edi +movsx edi,byte ptr (_x+4) +push edi +mov edi,dword ptr (_x) +push edi +lea edi,(L4) +push edi +call _printf +add esp,28 +mov edi,dword ptr (_y+4) +push edi +mov edi,dword ptr (_y) +mov esi,edi +shr esi,2 +and esi,15 +push esi +and edi,3 +push edi +lea edi,(L10) +push edi +call _printf +add esp,16 +mov edi,dword ptr (_x+8) +and edi,0ffff0fffH +mov esi,dword ptr (_i) +sal esi,28 +sar esi,28 +shl esi,12 +and esi,0f000H +or edi,esi +mov dword ptr (_x+8),edi +mov edi,dword ptr (_x+12) +and edi,0ffffff8fH +mov dword ptr (_x+12),edi +movsx edi,byte ptr (_x+13) +push edi +mov edi,dword ptr (_x+12) +sal edi,25 +sar edi,29 +push edi +mov edi,dword ptr (_x+8) +sal edi,16 +sar edi,28 +push edi +mov edi,dword ptr (_x+8) +sal edi,20 +sar edi,20 +push edi +movsx edi,byte ptr (_x+4) +push edi +mov edi,dword ptr (_x) +push edi +lea edi,(L4) +push edi +call _printf +add esp,28 +mov edi,dword ptr (_y) +and edi,0fffffffcH +or edi,2 +mov dword ptr (_y),edi +mov edi,dword ptr (_i) +mov dword ptr (_y+4),edi +mov edi,dword ptr (_y+4) +push edi +mov edi,dword ptr (_y) +mov esi,edi +shr esi,2 +and esi,15 +push esi +and edi,3 +push edi +lea edi,(L10) +push edi +call _printf +add esp,16 +lea edi,(_x) +push edi +call _f2 +add esp,4 +mov eax,0 +L3: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +public _f1 +_f1: +push ebx +push esi +push edi +push ebp +mov ebp,esp +mov edi,dword ptr (20)[ebp] +and dword ptr [edi],0ffffffc3H +mov edi,dword ptr (20)[ebp] +mov esi,dword ptr [edi] +and esi,0fffffffcH +mov ebx,0 +and ebx,3 +and ebx,3 +or esi,ebx +mov dword ptr [edi],esi +mov edi,dword ptr (20)[ebp] +mov edi,dword ptr [edi] +and edi,60 +cmp edi,0 +je L22 +lea edi,(L24) +push edi +call _printf +add esp,4 +L22: +mov edi,dword ptr (20)[ebp] +or dword ptr [edi],3 +mov edi,dword ptr (20)[ebp] +or dword ptr [edi],60 +mov edi,dword ptr (20)[ebp] +mov edi,dword ptr [edi] +mov esi,edi +shr esi,2 +and esi,15 +push esi +and edi,3 +push edi +lea edi,(L25) +push edi +call _printf +add esp,12 +mov eax,0 +L21: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +public _f2 +_f2: +push ebx +push esi +push edi +push ebp +mov ebp,esp +sub esp,4 +cmp dword ptr (_i),0 +jne L28 +mov dword ptr (-4)[ebp],1 +jmp L29 +L28: +mov dword ptr (-4)[ebp],0 +L29: +mov edi,dword ptr (20)[ebp] +mov esi,dword ptr [edi] +and esi,0fffffffcH +mov ebx,dword ptr (-4)[ebp] +and ebx,3 +and ebx,3 +or esi,ebx +mov dword ptr [edi],esi +mov edi,dword ptr (20)[ebp] +push edi +call _f1 +add esp,4 +mov esi,dword ptr [edi] +and esi,0ffffffc3H +mov ebx,0 +and ebx,15 +lea ebx,[ebx*4] +and ebx,60 +or esi,ebx +mov dword ptr [edi],esi +mov eax,0 +L26: +mov esp,ebp +pop ebp +pop edi +pop esi +pop ebx +ret +_TEXT ends +extrn _printf:near +_TEXT segment +_TEXT ends +_TEXT segment +align 1 +L25 label byte +db 112 +db 45 +db 62 +db 97 +db 32 +db 61 +db 32 +db 48 +db 120 +db 37 +db 120 +db 44 +db 32 +db 112 +db 45 +db 62 +db 98 +db 32 +db 61 +db 32 +db 48 +db 120 +db 37 +db 120 +db 10 +db 0 +align 1 +L24 label byte +db 112 +db 45 +db 62 +db 98 +db 32 +db 33 +db 61 +db 32 +db 48 +db 33 +db 10 +db 0 +align 1 +L10 label byte +db 121 +db 32 +db 61 +db 32 +db 37 +db 100 +db 32 +db 37 +db 100 +db 32 +db 37 +db 100 +db 10 +db 0 +align 1 +L4 label byte +db 120 +db 32 +db 61 +db 32 +db 37 +db 100 +db 32 +db 37 +db 100 +db 32 +db 37 +db 100 +db 32 +db 37 +db 100 +db 32 +db 37 +db 100 +db 32 +db 37 +db 100 +db 10 +db 0 +_TEXT ends +end |