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