Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

        TEXT    memccpy(SB),$0

        MOVL    n+12(FP), CX
        CMPL    CX, $0
        JEQ     none
        MOVL    p2+4(FP), DI
        MOVBLZX c+8(FP), AX
        CLD
/*
 * find the character in the second string
 */

        REPN;   SCASB
        JEQ     found

/*
 * if not found, set count to 'n'
 */
none:
        MOVL    $0, AX
        MOVL    n+12(FP), BX
        JMP     memcpy

/*
 * if found, set count to bytes thru character
 */
found:
        MOVL    DI, AX
        SUBL    p2+4(FP), AX
        MOVL    AX, BX
        ADDL    p1+0(FP), AX

/*
 * copy the memory
 */

memcpy:
        MOVL    p1+0(FP), DI
        MOVL    p2+4(FP), SI
/*
 * copy whole longs
 */
        MOVL    BX, CX
        SHRL    $2, CX
        REP;    MOVSL
/*
 * copy the rest, by bytes
 */
        ANDL    $3, BX
        MOVL    BX, CX
        REP;    MOVSB

        RET

Generated by GNU Enscript 1.6.6.