Annotation of researchv10no/libc/gen/memset.s, revision 1.1.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.