Aktív témák
-
P.H.
senior tag
Egy év eltelt, kissé változott a kódolás, de még fontosabb, hogy elkészült a hozzá tartozó egy szálas kiszolgáló kód - amely előkészíti a kiszámolandó mátrixokat - végleges(?) 32 bites változata. Ennek teljes kidolgozása +8-9% sebességnövekedést okozott K10-en.
jmp @@NEXTMATRIX
@terminate:
{ x1 } nop
jmp @@READY
@@NEXTMATRIX:
{align $34} nop; mov eax,[APPLICATION]; call TAPPLICATION.PROCESSMESSAGES
{align $40} mov [ebx+TTSP30.COLLECTOR],edi
or ecx,-1
mov eax,[ebx+TTSP30.MEMORY]
test cl,[ebx+TTSP30.CIRCLESTOP]
jnz @terminate
add [ebx+TTSP30.GLOBALSIZE],eax
{align $50} mov [ebx+TTSP30.MEMORY],ecx
mov edx,esi
mov ebp,[esi+TCIRCLE.NEXT]
cmovc edx,ebp
mov eax,[edi+TCIRCLE.NEXT]
cmovc ebp,eax
{align $5F} mov [ebx+TTSP30.ENTRY],edx
{align $62} cmovc eax,esi
mov [esi+TCIRCLE.NEXT],ebp
mov [edi+TCIRCLE.NEXT],eax
lea esi,[ebx+TTSP30.RESULTS]
cmp edx,ebp
jz @terminate
{align $70} mov ebx,[edx+TCIRCLE.QUANTITY]
add dword ptr [edx+TCIRCLE.QUANTITY],02h
mov ebp,[esp+_ROWSIZE4]
mov edi,[esp+_CMTX]
shr ebx,03h
@createBASE:
{align $81} mov eax,[edx+ebx*08h+04h]
mov [esp+_BASEELEMENT+ebx*08h+04h],eax
mov eax,[edx+ebx*08h+00h]
mov [esp+_BASEELEMENT+ebx*08h+00h],eax
{align $90} dec ebx
jnz @createBASE
{align $93} add edx,offset(TCIRCLE.SUGGESTED)
movzx eax,al
mov [esp+_BASEELEMENT+TCIRCLE.NEXT],edx
cmp [edx+eax],bl
{align $A0} jl @matrix0
mov [esp+_CDEST],ebx
@INVALIDmatrix:
{align $A6} mov dword ptr [esi+TRESULT.OPTIMUM],0FFFFFFFFh
inc ebx
mov ecx,eax
@create_matrixes:
{align $B0} movzx eax,byte ptr [esp+_BASEELEMENT+TCIRCLE.SHORTEST+ebx+00h]
cmp al,byte ptr [edx-TCIRCLE.SUGGESTED+TCIRCLE.SHORTEST+00h]
jz @@CHECKRESULTS
mov [edx+ecx],al
add esi,TRESULTSIZE
{align $C0} cmp byte ptr [edx+eax],0FFh
jnz @INVALIDmatrix
@matrix0:
movzx ebx,byte ptr [esp+_BASEELEMENT+TCIRCLE.SHORTEST+ebx+01h]
mov ecx,[esp+_SIZE2BYTE]
imul eax,ebp
shl ebx,02h
mov [esp+_CDEST],esi
sub ebx,eax
mov eax,[esp+_SAVEMTX]
mov [esi+TRESULT.NXTILTED],ebx
@copyMTX:
{align $E2} mov esi,[eax+ecx+04h]
mov [edi+ecx+04h],esi
mov esi,[eax+ecx]
mov [edi+ecx],esi
{align $F0} sub ecx,08h
jns @copyMTX
{align $F5} lea ecx,[esp+_BASEELEMENT+TCIRCLE.TILTEDS]
mov eax,[esp+_COUNT386]
@tilt:
{align $00} mov [edi+ebx],ebp
movzx ebx,word ptr [ecx]
add ecx,02h
test ebx,ebx
jnz @tilt
jmp eax
{ x1 } nop
@VALIDmatrix:
{align $10} mov ebx,[esi+TRESULTSIZE+TRESULT.IVALUE]
mov [esi+TRESULT.OPTIMUM],edx
mov [esi+TRESULT.CCIRCLE],ecx
mov edx,[esp+_BASEELEMENT+TCIRCLE.NEXT]
{align $20} movzx ecx,byte ptr [esp+_BASEELEMENT+TCIRCLE.SHORTEST+ebx-01h]
jmp @create_matrixes
{ x2 } nop; nop
@@CHECKRESULTS:
{align $29} add [CIRCLEVAR],ebx
mov ebx,offset(TSP30)
mov ebp,offset(TSP30.RESULTS)
mov edi,[ebx+TTSP30.COLLECTOR]
@@AFTERCIRCLE:
mov eax,[esp+_BASEELEMENT+TCIRCLE.QUANTITY]
{ x1 } nop
@@HEADMATRIX:
{align $40} mov esi,[ebx+TTSP30.ENTRY]
@next:
cmp ebp,[esp+_CDEST]
ja @@NEXTMATRIX
mov ecx,[ebp+TRESULT.OPTIMUM]
{align $50} add ebp,TRESULTSIZE
{ x1 } nop
cmp ecx,[ebx+TTSP30.GLOBALOPTIMUM]
jae @next
mov edx,[ebp-TRESULTSIZE+TRESULT.CCIRCLE]
cmp edx,[esp+_MTXSIZE]
{align @60} jz @@CIRCLE0
{ x1 } nop
cmp dword ptr [edi+TCIRCLE.NEXT],00h
jz @@PLUSMEM
@enqueue:
add dword ptr [ebx+TTSP30.MEMORY],01h
{align $70} cmovnz esi,[edi+TCIRCLE.NEXT]
{ x1 } nop
cmovnz edi,esi
mov [esi+TCIRCLE.RESULT],ecx
movzx ecx,dl
shr edx,08h
{align $80} lea ebx,[esi+TCIRCLE.SHORTEST+ecx]
neg ecx
mov [ebx],dl
@shortest:
mov [ebx+ecx],dl
movzx edx,byte ptr [ebp-TRESULTSIZE+TRESULT.ORDERSET+edx]
{align $90} add ecx,01h
jnz @shortest
movzx edx,byte ptr [esp+_BASEELEMENT+TCIRCLE.SHORTEST+00h]
lea ebx,[eax-TCIRCLE.QUANTITY]
shr ebx,03h
@clone:
{align $A0} mov eax,[esp+_BASEELEMENT+ebx*08h+04h+TCIRCLE.QUANTITY]
mov [esi+ebx*08h+04h+TCIRCLE.QUANTITY],eax
mov eax,[esp+_BASEELEMENT+ebx*08h+00h+TCIRCLE.QUANTITY]
mov [esi+ebx*08h+00h+TCIRCLE.QUANTITY],eax
{align $B0} dec ebx
jns @clone
mov ebx,[ebp-TRESULTSIZE+TRESULT.NXTILTED]
mov [esi+eax-02h],ebx
lea ebx,[TSP30]
@suggest:
{align $C0} cmp ecx,[ebp-TRESULTSIZE+TRESULT.IVALUE]
jae @@HEADMATRIX
movzx ebx,byte ptr [esp+_BASEELEMENT+TCIRCLE.SHORTEST+ecx+01h]
add ecx,01h
mov byte ptr [esi+TCIRCLE.SUGGESTED+edx],bl
mov edx,ebx
mov ebx,offset(TSP30)
jmp @suggest
{align $DE} { x3 } nop; nop; nop
{ x8 } nop; nop; nop; nop; nop; nop; nop; nop
@@PLUSMEM:
{align $E9} lea eax,[ebx+TTSP30.WORKAREAS]; xor edx,edx; call _ADDINT
mov edx,[ebx+TTSP30.STRUCTURESIZE]; mov ecx,3000; call _REALLO
{align $00} add [ebx+TTSP30.COLLECTED],ecx
dec ecx
@setmem:
{align $04} mov [eax+edx+TCIRCLE.NEXT],eax
add eax,edx
sub ecx,01h
jnz @setmem
{align $0E} mov edx,[ebp-TRESULTSIZE+TRESULT.CCIRCLE]
mov ecx,[ebp-TRESULTSIZE+TRESULT.OPTIMUM]
mov [edi+TCIRCLE.NEXT],eax
mov eax,[esp+_BASEELEMENT+TCIRCLE.QUANTITY]
jmp @enqueue
{ x1 } nop
@@CIRCLE0:
...
Aktív témák
- Robogó, kismotor
- Sorozatok
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- Luck Dragon: Asszociációs játék. :)
- Formula-1
- Fogyjunk le!
- Milyen légkondit a lakásba?
- iPhone topik
- Milyen billentyűzetet vegyek?
- Hivatalos a Poco X8 Pro Max gigantikus akkukapacitása
- További aktív témák...
- AZONNALI SZÁLLÍTÁS Eredeti Microsoft Office 2019 Professional Plus
- HIBÁTLAN iPhone 15 Pro 128GB Natural Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS4401
- Apple iPhone 15 128GB, Kártyafüggetlen, 1 Év Garanciával
- Keresünk Galaxy S23/S23+/S23 Ultra/S23 Fe
- Azonnali készpénzes nVidia RTX 2000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
