1 TEXT memcpy(SB), $0 2 3 MOVL p1+0(FP), DI 4 MOVL p2+4(FP), SI 5 MOVL n+8(FP), BX 6 CMPL BX, $0 7 JGE ok 8 MOVL $0, SI 9ok: 10 CLD 11/* 12 * check and set for backwards 13 */ 14 CMPL SI, DI 15 JLS back 16/* 17 * copy whole longs 18 */ 19 MOVL BX, CX 20 SHRL $2, CX 21 REP; MOVSL 22/* 23 * copy the rest, by bytes 24 */ 25 ANDL $3, BX 26 MOVL BX, CX 27 REP; MOVSB 28 29 MOVL p+0(FP),AX 30 RET 31/* 32 * whole thing backwards has 33 * adjusted addresses 34 */ 35back: 36 ADDL BX, DI 37 ADDL BX, SI 38 SUBL $4, DI 39 SUBL $4, SI 40 STD 41/* 42 * copy whole longs 43 */ 44 MOVL BX, CX 45 SHRL $2, CX 46 ANDL $3, BX 47 REP; MOVSL 48/* 49 * copy the rest, by bytes 50 */ 51 ADDL $3, DI 52 ADDL $3, SI 53 MOVL BX, CX 54 REP; MOVSB 55 56 MOVL p+0(FP),AX 57 RET 58