1*219b2ee8SDavid du Colombier TEXT strcpy(SB),$0 2*219b2ee8SDavid du Colombier 3*219b2ee8SDavid du Colombier MOVL $0, AX 4*219b2ee8SDavid du Colombier MOVL $-1, CX 5*219b2ee8SDavid du Colombier CLD 6*219b2ee8SDavid du Colombier/* 7*219b2ee8SDavid du Colombier * find end of second string 8*219b2ee8SDavid du Colombier */ 9*219b2ee8SDavid du Colombier 10*219b2ee8SDavid du Colombier MOVL p2+4(FP), DI 11*219b2ee8SDavid du Colombier REPN; SCASB 12*219b2ee8SDavid du Colombier 13*219b2ee8SDavid du Colombier MOVL DI, BX 14*219b2ee8SDavid du Colombier SUBL p2+4(FP), BX 15*219b2ee8SDavid du Colombier 16*219b2ee8SDavid du Colombier/* 17*219b2ee8SDavid du Colombier * copy the memory 18*219b2ee8SDavid du Colombier */ 19*219b2ee8SDavid du Colombier MOVL p1+0(FP), DI 20*219b2ee8SDavid du Colombier MOVL p2+4(FP), SI 21*219b2ee8SDavid du Colombier/* 22*219b2ee8SDavid du Colombier * copy whole longs 23*219b2ee8SDavid du Colombier */ 24*219b2ee8SDavid du Colombier MOVL BX, CX 25*219b2ee8SDavid du Colombier SHRL $2, CX 26*219b2ee8SDavid du Colombier REP; MOVSL 27*219b2ee8SDavid du Colombier/* 28*219b2ee8SDavid du Colombier * copy the rest, by bytes 29*219b2ee8SDavid du Colombier */ 30*219b2ee8SDavid du Colombier ANDL $3, BX 31*219b2ee8SDavid du Colombier MOVL BX, CX 32*219b2ee8SDavid du Colombier REP; MOVSB 33*219b2ee8SDavid du Colombier 34*219b2ee8SDavid du Colombier MOVL p1+0(FP), AX 35*219b2ee8SDavid du Colombier RET 36