1*3e12c5d1SDavid du Colombier TEXT memccpy(SB),$0 2*3e12c5d1SDavid du Colombier 3*3e12c5d1SDavid du Colombier MOVL n+12(FP), CX 4*3e12c5d1SDavid du Colombier CMPL CX, $0 5*3e12c5d1SDavid du Colombier JEQ none 6*3e12c5d1SDavid du Colombier MOVL p2+4(FP), DI 7*3e12c5d1SDavid du Colombier MOVBLZX c+8(FP), AX 8*3e12c5d1SDavid du Colombier CLD 9*3e12c5d1SDavid du Colombier/* 10*3e12c5d1SDavid du Colombier * find the character in the second string 11*3e12c5d1SDavid du Colombier */ 12*3e12c5d1SDavid du Colombier 13*3e12c5d1SDavid du Colombier REPN; SCASB 14*3e12c5d1SDavid du Colombier JEQ found 15*3e12c5d1SDavid du Colombier 16*3e12c5d1SDavid du Colombier/* 17*3e12c5d1SDavid du Colombier * if not found, set count to 'n' 18*3e12c5d1SDavid du Colombier */ 19*3e12c5d1SDavid du Colombiernone: 20*3e12c5d1SDavid du Colombier MOVL $0, AX 21*3e12c5d1SDavid du Colombier MOVL n+12(FP), BX 22*3e12c5d1SDavid du Colombier JMP memcpy 23*3e12c5d1SDavid du Colombier 24*3e12c5d1SDavid du Colombier/* 25*3e12c5d1SDavid du Colombier * if found, set count to bytes thru character 26*3e12c5d1SDavid du Colombier */ 27*3e12c5d1SDavid du Colombierfound: 28*3e12c5d1SDavid du Colombier MOVL DI, AX 29*3e12c5d1SDavid du Colombier SUBL p2+4(FP), AX 30*3e12c5d1SDavid du Colombier MOVL AX, BX 31*3e12c5d1SDavid du Colombier ADDL p1+0(FP), AX 32*3e12c5d1SDavid du Colombier 33*3e12c5d1SDavid du Colombier/* 34*3e12c5d1SDavid du Colombier * copy the memory 35*3e12c5d1SDavid du Colombier */ 36*3e12c5d1SDavid du Colombier 37*3e12c5d1SDavid du Colombiermemcpy: 38*3e12c5d1SDavid du Colombier MOVL p1+0(FP), DI 39*3e12c5d1SDavid du Colombier MOVL p2+4(FP), SI 40*3e12c5d1SDavid du Colombier/* 41*3e12c5d1SDavid du Colombier * copy whole longs 42*3e12c5d1SDavid du Colombier */ 43*3e12c5d1SDavid du Colombier MOVL BX, CX 44*3e12c5d1SDavid du Colombier SHRL $2, CX 45*3e12c5d1SDavid du Colombier REP; MOVSL 46*3e12c5d1SDavid du Colombier/* 47*3e12c5d1SDavid du Colombier * copy the rest, by bytes 48*3e12c5d1SDavid du Colombier */ 49*3e12c5d1SDavid du Colombier ANDL $3, BX 50*3e12c5d1SDavid du Colombier MOVL BX, CX 51*3e12c5d1SDavid du Colombier REP; MOVSB 52*3e12c5d1SDavid du Colombier 53*3e12c5d1SDavid du Colombier RET 54