TEXT strcat(SB),$0
MOVL $0, AX
MOVL $-1, CX
CLD
/*
* find length of second string
*/
MOVL p2+4(FP), DI
REPN; SCASB
MOVL DI, BX
SUBL p2+4(FP), BX
/*
* find end of first string
*/
MOVL p1+0(FP), DI
REPN; SCASB
/*
* copy the memory
*/
SUBL $1, 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
MOVL p1+0(FP), AX
RET
|