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