aboutsummaryrefslogtreecommitdiffstats
path: root/lcc/x86/win32/tst/fields.sbk
diff options
context:
space:
mode:
Diffstat (limited to 'lcc/x86/win32/tst/fields.sbk')
-rwxr-xr-xlcc/x86/win32/tst/fields.sbk323
1 files changed, 323 insertions, 0 deletions
diff --git a/lcc/x86/win32/tst/fields.sbk b/lcc/x86/win32/tst/fields.sbk
new file mode 100755
index 0000000..0e5e059
--- /dev/null
+++ b/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