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

1.1     ! root        1:        .file   "memset.s"
        !             2: #      @(#)memset.s    1.5
        !             3: # Fast assembler language version of the following C-program
        !             4: #                      memset
        !             5: # which represents the `standard' for the C-library.
        !             6: 
        !             7: # Set an array of n chars starting at sp to the character c.
        !             8: #      
        !             9: #      char *
        !            10: #      memset(sp, c, n)
        !            11: #      register char *sp, c;
        !            12: #      register int n;
        !            13: #      {
        !            14: #              register char *sp0 = sp;
        !            15: #
        !            16: #              while (--n >= 0)
        !            17: #                      *sp++ = c;
        !            18: #              return (sp0);
        !            19: #      }
        !            20:        .globl  _memset
        !            21:        .text
        !            22:        .align  2
        !            23: _memset:
        !            24:        .word   0x00c0          # pgm uses regs 0,1,2,3,4,5,6,7
        !            25:        movl    12(ap),r6       # n in r6
        !            26:        bleq    L2              #       should be > 0
        !            27:        movq    4(ap),r3        # s1 in r3; `c' in r4
        !            28:        movl    r4,r7           # r0 to r5 are clobbered by movc5
        !            29: L0:
        !            30:        cmpl    $65535,r6       # is len VERY large?
        !            31:        bgeq    L1              # hop if not
        !            32:        movc5   $0,(ap),r7,$65535,(r3)  # copy `c' into this BLOCK
        !            33:        subl2   $65535,r6       # compute remaining len
        !            34:        jbr     L0              # go back to fill some more
        !            35: L1:
        !            36:        movc5   $0,(ap),r7,r6,(r3)      # copy `c' into this BLOCK
        !            37: L2:
        !            38:        movl    4(ap),r0        # we're done - return s1
        !            39:        ret

unix.superglobalmegacorp.com

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