|
|
1.1 root 1: .386P
2: .model FLAT
3: ;
4: ; r_aliasa.s
5: ; x86 assembly-language Alias model transform and project code.
6: ;
7:
8: include qasm.inc
9: include d_if.inc
10:
11: if id386
12:
13: _DATA SEGMENT
14: Ltemp0 dd 0
15: Ltemp1 dd 0
16:
17: _DATA ENDS
18: _TEXT SEGMENT
19:
20: pfv0 equ 8+4
21: pfv1 equ 8+8
22: outparm equ 8+12
23:
24: public _R_Alias_clip_bottom
25: _R_Alias_clip_bottom:
26: push esi
27: push edi
28:
29: mov esi,ds:dword ptr[pfv0+esp]
30: mov edi,ds:dword ptr[pfv1+esp]
31:
32: mov eax,ds:dword ptr[_r_refdef+rd_aliasvrectbottom]
33:
34: LDoForwardOrBackward:
35:
36: mov edx,ds:dword ptr[fv_v+4+esi]
37: mov ecx,ds:dword ptr[fv_v+4+edi]
38:
39: cmp edx,ecx
40: jl LDoForward
41:
42: mov ecx,ds:dword ptr[fv_v+4+esi]
43: mov edx,ds:dword ptr[fv_v+4+edi]
44: mov edi,ds:dword ptr[pfv0+esp]
45: mov esi,ds:dword ptr[pfv1+esp]
46:
47: LDoForward:
48:
49: sub ecx,edx
50: sub eax,edx
51: mov ds:dword ptr[Ltemp1],ecx
52: mov ds:dword ptr[Ltemp0],eax
53: fild ds:dword ptr[Ltemp1]
54: fild ds:dword ptr[Ltemp0]
55: mov edx,ds:dword ptr[outparm+esp]
56: mov eax,2
57:
58: fdivrp st(1),st(0) ; scale
59:
60: LDo3Forward:
61: fild ds:dword ptr[fv_v+0+esi] ; fv0v0 | scale
62: fild ds:dword ptr[fv_v+0+edi] ; fv1v0 | fv0v0 | scale
63: fild ds:dword ptr[fv_v+4+esi] ; fv0v1 | fv1v0 | fv0v0 | scale
64: fild ds:dword ptr[fv_v+4+edi] ; fv1v1 | fv0v1 | fv1v0 | fv0v0 | scale
65: fild ds:dword ptr[fv_v+8+esi] ; fv0v2 | fv1v1 | fv0v1 | fv1v0 | fv0v0 | scale
66: fild ds:dword ptr[fv_v+8+edi] ; fv1v2 | fv0v2 | fv1v1 | fv0v1 | fv1v0 | fv0v0 |
67: ; scale
68: fxch st(5) ; fv0v0 | fv0v2 | fv1v1 | fv0v1 | fv1v0 | fv1v2 |
69: ; scale
70: fsub st(4),st(0) ; fv0v0 | fv0v2 | fv1v1 | fv0v1 | fv1v0-fv0v0 |
71: ; fv1v2 | scale
72: fxch st(3) ; fv0v1 | fv0v2 | fv1v1 | fv0v0 | fv1v0-fv0v0 |
73: ; fv1v2 | scale
74: fsub st(2),st(0) ; fv0v1 | fv0v2 | fv1v1-fv0v1 | fv0v0 |
75: ; fv1v0-fv0v0 | fv1v2 | scale
76: fxch st(1) ; fv0v2 | fv0v1 | fv1v1-fv0v1 | fv0v0 |
77: ; fv1v0-fv0v0 | fv1v2 | scale
78: fsub st(5),st(0) ; fv0v2 | fv0v1 | fv1v1-fv0v1 | fv0v0 |
79: ; fv1v0-fv0v0 | fv1v2-fv0v2 | scale
80: fxch st(6) ; scale | fv0v1 | fv1v1-fv0v1 | fv0v0 |
81: ; fv1v0-fv0v0 | fv1v2-fv0v2 | fv0v2
82: fmul st(4),st(0) ; scale | fv0v1 | fv1v1-fv0v1 | fv0v0 |
83: ; (fv1v0-fv0v0)*scale | fv1v2-fv0v2 | fv0v2
84: add edi,12
85: fmul st(2),st(0) ; scale | fv0v1 | (fv1v1-fv0v1)*scale | fv0v0 |
86: ; (fv1v0-fv0v0)*scale | fv1v2-fv0v2 | fv0v2
87: add esi,12
88: add edx,12
89: fmul st(5),st(0) ; scale | fv0v1 | (fv1v1-fv0v1)*scale | fv0v0 |
90: ; (fv1v0-fv0v0)*scale | (fv1v2-fv0v2)*scale |
91: ; fv0v2
92: fxch st(3) ; fv0v0 | fv0v1 | (fv1v1-fv0v1)*scale | scale |
93: ; (fv1v0-fv0v0)*scale | (fv1v2-fv0v2)*scale |
94: ; fv0v2
95: faddp st(4),st(0) ; fv0v1 | (fv1v1-fv0v1)*scale | scale |
96: ; fv0v0+(fv1v0-fv0v0)*scale |
97: ; (fv1v2-fv0v2)*scale | fv0v2
98: faddp st(1),st(0) ; fv0v1+(fv1v1-fv0v1)*scale | scale |
99: ; fv0v0+(fv1v0-fv0v0)*scale |
100: ; (fv1v2-fv0v2)*scale | fv0v2
101: fxch st(4) ; fv0v2 | scale | fv0v0+(fv1v0-fv0v0)*scale |
102: ; (fv1v2-fv0v2)*scale | fv0v1+(fv1v1-fv0v1)*scale
103: faddp st(3),st(0) ; scale | fv0v0+(fv1v0-fv0v0)*scale |
104: ; fv0v2+(fv1v2-fv0v2)*scale |
105: ; fv0v1+(fv1v1-fv0v1)*scale
106: fxch st(1) ; fv0v0+(fv1v0-fv0v0)*scale | scale |
107: ; fv0v2+(fv1v2-fv0v2)*scale |
108: ; fv0v1+(fv1v1-fv0v1)*scale
109: fadd ds:dword ptr[float_point5]
110: fxch st(3) ; fv0v1+(fv1v1-fv0v1)*scale | scale |
111: ; fv0v2+(fv1v2-fv0v2)*scale |
112: ; fv0v0+(fv1v0-fv0v0)*scale
113: fadd ds:dword ptr[float_point5]
114: fxch st(2) ; fv0v2+(fv1v2-fv0v2)*scale | scale |
115: ; fv0v1+(fv1v1-fv0v1)*scale |
116: ; fv0v0+(fv1v0-fv0v0)*scale
117: fadd ds:dword ptr[float_point5]
118: fxch st(3) ; fv0v0+(fv1v0-fv0v0)*scale | scale |
119: ; fv0v1+(fv1v1-fv0v1)*scale |
120: ; fv0v2+(fv1v2-fv0v2)*scale
121: fistp ds:dword ptr[fv_v+0-12+edx] ; scale | fv0v1+(fv1v1-fv0v1)*scale |
122: ; fv0v2+(fv1v2-fv0v2)*scale
123: fxch st(1) ; fv0v1+(fv1v1-fv0v1)*scale | scale |
124: ; fv0v2+(fv1v2-fv0v2)*scale | scale
125: fistp ds:dword ptr[fv_v+4-12+edx] ; scale | fv0v2+(fv1v2-fv0v2)*scale
126: fxch st(1) ; fv0v2+(fv1v2-fv0v2)*sc | scale
127: fistp ds:dword ptr[fv_v+8-12+edx] ; scale
128:
129: dec eax
130: jnz LDo3Forward
131:
132: fstp st(0)
133:
134: pop edi
135: pop esi
136:
137: ret
138:
139:
140: public _R_Alias_clip_top
141: _R_Alias_clip_top:
142: push esi
143: push edi
144:
145: mov esi,ds:dword ptr[pfv0+esp]
146: mov edi,ds:dword ptr[pfv1+esp]
147:
148: mov eax,ds:dword ptr[_r_refdef+rd_aliasvrect+4]
149: jmp LDoForwardOrBackward
150:
151:
152:
153: public _R_Alias_clip_right
154: _R_Alias_clip_right:
155: push esi
156: push edi
157:
158: mov esi,ds:dword ptr[pfv0+esp]
159: mov edi,ds:dword ptr[pfv1+esp]
160:
161: mov eax,ds:dword ptr[_r_refdef+rd_aliasvrectright]
162:
163: LRightLeftEntry:
164:
165:
166: mov edx,ds:dword ptr[fv_v+4+esi]
167: mov ecx,ds:dword ptr[fv_v+4+edi]
168:
169: cmp edx,ecx
170: mov edx,ds:dword ptr[fv_v+0+esi]
171:
172: mov ecx,ds:dword ptr[fv_v+0+edi]
173: jl LDoForward2
174:
175: mov ecx,ds:dword ptr[fv_v+0+esi]
176: mov edx,ds:dword ptr[fv_v+0+edi]
177: mov edi,ds:dword ptr[pfv0+esp]
178: mov esi,ds:dword ptr[pfv1+esp]
179:
180: LDoForward2:
181:
182: jmp LDoForward
183:
184:
185: public _R_Alias_clip_left
186: _R_Alias_clip_left:
187: push esi
188: push edi
189:
190: mov esi,ds:dword ptr[pfv0+esp]
191: mov edi,ds:dword ptr[pfv1+esp]
192:
193: mov eax,ds:dword ptr[_r_refdef+rd_aliasvrect+0]
194: jmp LRightLeftEntry
195:
196:
197:
198: _TEXT ENDS
199: endif ;id386
200: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.