Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdint.h>
- void memset32(int32_t *i, int32_t v, uint32_t len)
- {
- __asm__(
- //"pushl %eax\n\t"
- //"pushl %ebx\n\t"
- "xorl %eax, %eax\n\t" // EAX = 0
- "movl -12(%rbp), %ebx\n\t" // EBX = v
- ".memset32_l1:\n\t"
- "cmpl -16(%rbp), %eax\n\t" // compare len and EAX
- "jle .memset32_l1e\n\t" // EAX < len
- "movl %ebx, -8(%rbp)\n\t" // *i = v
- "addq $4, -8(%rbp)\n\t" // i++
- "addl $1, %eax\n\t" // EAX++
- "jmp .memset32_l1\n\t"
- ".memset32_l1e:\n\t"
- //"popl %eax\n\t"
- //"popl %ebx"
- );
- }
- int main() {
- int32_t a[4];
- int i;
- for ( i = 0; i < 4; i++ ) {
- a[i] = rand();
- printf("a[%d] = %d\n", i, a[i]);
- }
- memset32(a, 0, 4);
- puts("After memset32:");
- for ( i = 0; i < 4; i++ )
- printf("a[%d] = %d\n", i, a[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement