home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / pc / unix / dgrep.arc / DFAREGEX.OPT < prev    next >
Encoding:
Text File  |  1990-03-16  |  1.5 KB  |  59 lines

  1. ; Hand optimized version of dfaregex inner loop for Turbo C
  2.  
  3. ********** FAST version ****************************************
  4.  
  5. ; This speeds up the dfa search about 10% from the normal optimized version
  6.  
  7. ;    ?debug    L 170
  8.     inc    di
  9. ;******************* begin change
  10. @43:                    ;INNER LOOP ENTRY (changed)
  11.     mov    ax,word ptr [bp-4]    ;prev_state
  12.     jmp    short @43a
  13. ;;;;;;;;;;;;;;;;;;;; INNER LOOP BEGIN        ;clocks in 80(1?|2)86
  14. @42:
  15.     mov    ax,si                ;2
  16.     mov    bl,byte ptr [di]        ;8+5=13
  17.     sub    bh,bh                ;3
  18.     shl    bx,1                ;2
  19.     mov    si,word ptr [bx+si]        ;8+7=15
  20.     inc    di                ;2
  21. @43a:
  22.     cmp    si,-4                ;4
  23.     jb    @42                ;16
  24. ;;;;;;;;;;;;;;;;;;;; INNER LOOP END        ;--- 57 clocks, 8 instr.
  25.     mov    word ptr [bp-4],ax    ;prev_state
  26. ;******************* end change
  27. ;    ?debug    L 185
  28.  
  29. ********** NORMAL VERSION ****************************************
  30.  
  31. ; This speeds up the dfa search about 20%
  32.  
  33. ;    ?debug    L 170
  34.     inc    di
  35. ;******************* begin change
  36. @43:    ; INNER LOOP ENTRY (changed)
  37.     mov    ax,word ptr [bp-4]
  38.     sub    bh,bh
  39.     jmp    short @43a
  40. ;;;;;;;;;;;;;;;;;;;; INNER LOOP BEGIN        ;clocks in 80(1?|2)86
  41. @42:
  42.     mov    ax,si                ;2
  43.     shl    si,1                ;2
  44.     mov    si,word ptr DGROUP:_rbuf[si]    ;9+9=18
  45.     mov    bl,byte ptr [di]        ;8+5=13
  46.     mov    bl,byte ptr [bx+si]        ;8+7=15
  47.     mov    si,bx                ;2
  48.     inc    di                ;2
  49. @43a:
  50.     cmp    si,252                ;4
  51.     jb    @42                ;16
  52. ;;;;;;;;;;;;;;;;;;; INNER LOOP END        ;--- 74 clocks, 9 instr.
  53.     mov    word ptr [bp-4],ax
  54. ;******************* end change
  55. ; Exit inner loop
  56.     cmp    si,255
  57.     jne    @44
  58. ;    ?debug    L 186
  59.