Есть такой код: Код (Text): _recv proc local buffer[2048]:byte local readlen:dword invoke ioctlsocket,client,FIONREAD,addr readlen .if (eax==NULL) invoke recv,client,addr buffer,readlen,0 cmp eax,1 jl _exit mov ecx,eax mov ebx,eax lea esi,buffer mov edi,esi cld @L1: lodsb .if (al==0Ah) || (al==0Dh) mov byte ptr [esi-1],0 .endif dec ecx jnz @L1 mov ecx,ebx mov al,0 mov edx,edi @L2: repnz scasb pusha ; в edx строка ; делаем наше дело... popa repz scasb mov edx,edi dec edx test ecx,ecx jne @L2 .endif _exit: ret _recv endp Можно-ли сделать ещё быстрее?
lodsb - это разве быстро? по-моему, lodsb - это компактно, а не быстро если всё равно оперируешь esi и ecx, нафига lodsb?
Код (Text): mov ecx,eax lea esi,buffer mov edi,esi @L1: mov al,[esi] inc esi or al,al jz @L3 cmp al,0Ah jne @L1 mov byte ptr [esi-1],0 jmp @L1 @L3: mov edx,edi @L2: repnz scasb pusha ;.... popa repz scasb mov edx,edi dec edx test ecx,ecx jne @L2 А теперь?