Rev 5418 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5418 | Rev 6017 | ||
---|---|---|---|
Line 205... | Line 205... | ||
205 | faddp |
205 | faddp |
206 | fld dword[ebx+8] ;st0 = m[_][2] |
206 | fld dword[ebx+8] ;st0 = m[_][2] |
207 | fmul st0,st3 ;st0 *= c.Z |
207 | fmul st0,st3 ;st0 *= c.Z |
208 | faddp |
208 | faddp |
209 | fld dword[ebx+12] ;st0 += m[_][3] |
209 | fld dword[ebx+12] ;st0 += m[_][3] |
210 | fmul st0,st2 ;st0 *= c.Z |
210 | fmul st0,st2 ;st0 *= c.W |
211 | faddp |
211 | faddp |
212 | fstp dword[edx] ;a.X = b.m[_][0]*c.X +b.m[_][1]*c.Y +b.m[_][2]*c.Z +b.m[_][3]*c.W |
212 | fstp dword[edx] ;a.X = b.m[_][0]*c.X +b.m[_][1]*c.Y +b.m[_][2]*c.Z +b.m[_][3]*c.W |
213 | add ebx,16 ;ñëåäóùàÿ ñòðîêà ìàòðèöû |
213 | add ebx,16 ;ñëåäóùàÿ ñòðîêà ìàòðèöû |
214 | add edx,4 ;ñëåäóùàÿ êîîðäèíàòà âåêòîðà |
214 | add edx,4 ;ñëåäóùàÿ êîîðäèíàòà âåêòîðà |
215 | loop .cycle_1 |
215 | loop .cycle_1 |
Line 341... | Line 341... | ||
341 | imul eax,ebx |
341 | imul eax,ebx |
342 | add eax,ecx |
342 | add eax,ecx |
343 | shl eax,2 |
343 | shl eax,2 |
344 | add eax,[m] |
344 | add eax,[m] |
345 | fld dword[eax] |
345 | fld dword[eax] |
- | 346 | fld st0 |
|
- | 347 | fabs |
|
- | 348 | fld dword[max] |
|
- | 349 | fabs |
|
346 | fcom dword[max] ;if (fabs(m[i*n+j])>fabs(max)) |
350 | fcompp ;if (fabs(m[i*n+j])>fabs(max)) |
347 | fstsw ax |
351 | fstsw ax |
348 | sahf |
352 | sahf |
349 | jbe @f |
353 | jae @f |
350 | mov edx,edi ;k=i |
354 | mov edx,edi ;k=i |
351 | fst dword[max] |
355 | fst dword[max] |
352 | @@: |
356 | @@: |
353 | ffree st0 |
357 | ffree st0 ;m[i*n+j] |
354 | fincstp |
358 | fincstp |
355 | inc edi |
359 | inc edi |
356 | jmp .cycle_1 |
360 | jmp .cycle_1 |
357 | .cycle_1_end: |
361 | .cycle_1_end: |
Line 598... | Line 602... | ||
598 | align 4 |
602 | align 4 |
599 | proc gl_V3_Norm uses ebx, a:dword |
603 | proc gl_V3_Norm uses ebx, a:dword |
600 | mov ebx,[a] |
604 | mov ebx,[a] |
601 | fld dword[ebx] |
605 | fld dword[ebx] |
602 | fmul st0,st0 |
606 | fmul st0,st0 |
603 | fld dword[ebx+4] |
607 | fld dword[ebx+offs_Y] |
604 | fmul st0,st0 |
608 | fmul st0,st0 |
605 | faddp |
609 | faddp |
606 | fld dword[ebx+8] |
610 | fld dword[ebx+offs_Z] |
607 | fmul st0,st0 |
611 | fmul st0,st0 |
608 | faddp |
612 | faddp |
609 | fsqrt ;st0 = sqrt(a.X^2 +a.Y^2 +a.Z^2) |
613 | fsqrt ;st0 = sqrt(a.X^2 +a.Y^2 +a.Z^2) |
610 | ftst |
614 | ftst |
611 | fstsw ax |
615 | fstsw ax |
612 | sahf |
616 | sahf |
613 | je .r1 ;if (sqrt(...)==0) return 1 |
617 | je .r1 ;if (sqrt(...)==0) return 1 |
614 | fld dword[ebx] ;offs_X = 0 |
618 | fld dword[ebx] ;offs_X = 0 |
615 | fdiv st0,st1 |
619 | fdiv st0,st1 |
616 | fstp dword[ebx] ;a.X/=sqrt(...) |
620 | fstp dword[ebx] ;a.X/=sqrt(...) |
617 | fld dword[ebx+4] |
621 | fld dword[ebx+offs_Y] |
618 | fdiv st0,st1 |
622 | fdiv st0,st1 |
619 | fstp dword[ebx+4] ;a.Y/=sqrt(...) |
623 | fstp dword[ebx+offs_Y] ;a.Y/=sqrt(...) |
620 | fld dword[ebx+8] |
624 | fld dword[ebx+offs_Z] |
621 | fdiv st0,st1 |
625 | fdiv st0,st1 |
622 | fstp dword[ebx+8] ;a.Z/=sqrt(...) |
626 | fstp dword[ebx+offs_Z] ;a.Z/=sqrt(...) |
623 | xor eax,eax |
627 | xor eax,eax |
624 | jmp @f |
628 | jmp @f |
625 | .r1: |
629 | .r1: |
626 | xor eax,eax |
630 | xor eax,eax |
627 | inc eax |
631 | inc eax |