[BACK]Return to strcmp.S CVS log [TXT][DIR] Up to [local] / sys / lib / libkern / arch / i386

Annotation of sys/lib/libkern/arch/i386/strcmp.S, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: strcmp.S,v 1.2 1996/09/27 06:47:49 mickey Exp $       */
        !             2:
        !             3: /*
        !             4:  * Written by J.T. Conklin <jtc@netbsd.org>.
        !             5:  * Public domain.
        !             6:  */
        !             7:
        !             8: #include <machine/asm.h>
        !             9:
        !            10: /*
        !            11:  * NOTE: I've unrolled the loop eight times: large enough to make a
        !            12:  * significant difference, and small enough not to totally trash the
        !            13:  * cache.
        !            14:  */
        !            15:
        !            16: ENTRY(strcmp)
        !            17:        movl    0x04(%esp),%eax
        !            18:        movl    0x08(%esp),%edx
        !            19:        jmp     L2                      /* Jump into the loop! */
        !            20:
        !            21:        .align  2,0x90
        !            22: L1:    incl    %eax
        !            23:        incl    %edx
        !            24: L2:    movb    (%eax),%cl
        !            25:        testb   %cl,%cl                 /* null terminator??? */
        !            26:        jz      L3
        !            27:        cmpb    %cl,(%edx)              /* chars match??? */
        !            28:        jne     L3
        !            29:        incl    %eax
        !            30:        incl    %edx
        !            31:        movb    (%eax),%cl
        !            32:        testb   %cl,%cl
        !            33:        jz      L3
        !            34:        cmpb    %cl,(%edx)
        !            35:        jne     L3
        !            36:        incl    %eax
        !            37:        incl    %edx
        !            38:        movb    (%eax),%cl
        !            39:        testb   %cl,%cl
        !            40:        jz      L3
        !            41:        cmpb    %cl,(%edx)
        !            42:        jne     L3
        !            43:        incl    %eax
        !            44:        incl    %edx
        !            45:        movb    (%eax),%cl
        !            46:        testb   %cl,%cl
        !            47:        jz      L3
        !            48:        cmpb    %cl,(%edx)
        !            49:        jne     L3
        !            50:        incl    %eax
        !            51:        incl    %edx
        !            52:        movb    (%eax),%cl
        !            53:        testb   %cl,%cl
        !            54:        jz      L3
        !            55:        cmpb    %cl,(%edx)
        !            56:        jne     L3
        !            57:        incl    %eax
        !            58:        incl    %edx
        !            59:        movb    (%eax),%cl
        !            60:        testb   %cl,%cl
        !            61:        jz      L3
        !            62:        cmpb    %cl,(%edx)
        !            63:        jne     L3
        !            64:        incl    %eax
        !            65:        incl    %edx
        !            66:        movb    (%eax),%cl
        !            67:        testb   %cl,%cl
        !            68:        jz      L3
        !            69:        cmpb    %cl,(%edx)
        !            70:        jne     L3
        !            71:        incl    %eax
        !            72:        incl    %edx
        !            73:        movb    (%eax),%cl
        !            74:        testb   %cl,%cl
        !            75:        jz      L3
        !            76:        cmpb    %cl,(%edx)
        !            77:        je      L1
        !            78:        .align 2, 0x90
        !            79: L3:    movzbl  (%eax),%eax             /* unsigned comparison */
        !            80:        movzbl  (%edx),%edx
        !            81:        subl    %edx,%eax
        !            82:        ret

CVSweb