Hi ecm,

> [1]: 
> https://gitlab.com/DOSx86/logger/-/blob/aae3dfddcdacfea18950a96ce9449767c20b2d66/source/logger/common.inc#L267

this got me looking into this 'too slow' detection method.
and it is indeed slow. as in molasse. let me explain.


a) isn't

  %%Comparing:
        inc             di
        lodsb
        cmp             al, [es:di]
        jne             %%Next
        loop            %%Comparing

more or less the definition of

        repe cmpsw

??


b) decompiling the actual code, it's basically


  for (seg = 10; seg < 0xa000; seg++)
        {
        if (fmemcmp(MK_FP(seg, 9), "LOGGER", DriverLength))
                {
                return found_our_driver_at(seg);
                }
        }
   return failure;

that's indeed slow as it compares all memory up to 0xa000 to lookup the driver,
or up to the drivers address (which is much better most of the time.

when I mentioned microseconds, I had the DOS memory chain in mind where you 
would have 
to compare 20-50 locations to your drivers name.









_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to