Code: Select all
Structure SCountCharsLookupTable
A.b[256]
EndStructure
Procedure CountCharX86Lookup(*B.long, L, Char.a)
Protected Table.SCountCharsLookupTable
Table\A[Char] = 1
!mov ecx, [p.v_L]
!mov eax, [p.p_B]
!push edi
!PS_CC = 4
!xor edi, edi
!lp2:
!movzx edx, byte [ecx+eax-1]
!movzx edx, byte [p.v_Table+edx+PS_CC]
!add edi, edx
!add ecx, -1
!jnz lp2
!mov eax, edi
!pop edi
ProcedureReturn
EndProcedure
Lookup x86: 2700-2750 ms