strcpy.s 382 B

1234567891011121314151617181920212223242526272829303132333435
  1. TEXT strcpy(SB),$0
  2. MOVL $0, AX
  3. MOVL $-1, CX
  4. CLD
  5. /*
  6. * find end of second string
  7. */
  8. MOVL p2+4(FP), DI
  9. REPN; SCASB
  10. MOVL DI, BX
  11. SUBL p2+4(FP), BX
  12. /*
  13. * copy the memory
  14. */
  15. MOVL p1+0(FP), DI
  16. MOVL p2+4(FP), SI
  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. MOVL p1+0(FP), AX
  30. RET