Annotation of coherent/b/lib/libc/string/i386/memset.s, revision 1.1.1.1

1.1       root        1: //////////
                      2: / libc/string/i386/memset.s
                      3: / i386 C string library.
                      4: / ANSI 4.11.6.1.
                      5: //////////
                      6: 
                      7: //////////
                      8: / void *
                      9: / memset(void *String, int Char, size_t Count)
                     10: /
                     11: / Set Count bytes of String to Char.
                     12: / Uses repeated dword copy for efficiency.
                     13: //////////
                     14: 
                     15: String .equ    8
                     16: Char   .equ    String+4
                     17: Count  .equ    Char+4
                     18: 
                     19:        .data
                     20: fourx: .long   0x01010101
                     21: 
                     22:        .text
                     23:        .globl  memset
                     24: 
                     25: memset:
                     26:        push    %edi
                     27: 
                     28:        movl    %ecx, Count(%esp)       / Count to ECX
                     29:        movl    %edi, String(%esp)      / String address to EDI
                     30:        movzxb  %eax, Char(%esp)        / Char to EAX
                     31:        mull    %eax, fourx             / Char:Char:Char:Char in EAX
                     32:        movl    %edx, %ecx              / Save Count in EDX
                     33:        shrl    %ecx, $2                / Count/4
                     34:        cld
                     35:        rep
                     36:        stosl                           / Copy Count/4 Char dwords to String
                     37:        jnc     ?byte                   / CF contains Count bit 1 from shrl above
                     38:        stosw                           / Copy a word
                     39: 
                     40: ?byte:
                     41:        shrl    %edx, $1
                     42:        jnc     ?done
                     43:        stosb                           / Copy Char to String
                     44: 
                     45: ?done:
                     46:        movl    %eax, String(%esp)      / Return the destination in EAX
                     47: 
                     48:        pop     %edi
                     49:        ret
                     50: 
                     51: / end of libc/string/i386/memset.s

unix.superglobalmegacorp.com

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