Annotation of researchv10no/libc/gen/memcpy.s, revision 1.1

1.1     ! root        1:        .file   "memcpy.s"
        !             2: #      @(#)memcpy.s    1.5
        !             3: # Fast assembler language version of the following C-program
        !             4: #                      memcpy
        !             5: # which represents the `standard' for the C-library.
        !             6: 
        !             7: # Copy s2 to s1, always copy n bytes.
        !             8: # Return s1
        !             9: 
        !            10: #      char *
        !            11: #      memcpy(s1, s2, n)
        !            12: #      register char *s1, *s2;
        !            13: #      register int n;
        !            14: #      {
        !            15: #              register char *os1 = s1;
        !            16: #      
        !            17: #              while (--n >= 0)
        !            18: #                      *s1++ = *s2++;
        !            19: #              return (os1);
        !            20: #      }
        !            21:        .globl  _memcpy
        !            22:        .text
        !            23:        .align  2
        !            24: _memcpy:
        !            25:        .word   0x0040          # uses regs. 0,1,2,3,4,5,6
        !            26:        movl    12(ap),r6       # length (arg `n')
        !            27:        bleq    L2              # n <= 0, so return now!
        !            28:        movq    4(ap),r3        # dest ptr s1
        !            29:        movl    r4,r1           # src ptr s2
        !            30: L0:
        !            31:        cmpl    $65535,r6       # is len VERY large?
        !            32:        bgeq    L1              # hop if not
        !            33:        movc3   $65535,(r1),(r3)        # Move n bytes
        !            34:        subl2   $65535,r6
        !            35:        jbr     L0              # go move some more string
        !            36: L1:
        !            37:        movc3   r6,(r1),(r3)    # Move n bytes
        !            38: L2:
        !            39:        movl    4(ap),r0        # we're done - return s1
        !            40:        ret

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.