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