汇编写下strcpy

  1 #include <stdio.h>
  2 
  3 int main()
  4 {
  5         char *source = "hello world
";
  6         char dest[1024] = {0};
  7         char *p = dest;
  8         char c = '';
  9 #if 0
 10 loop: 
 11         if(*(source + i) == ''){
 12                 *(dest + i) = '';
 13                 goto exit;
 14         }
 15         *(dest + i) = *(source + i);
 16         i++;
 17         goto loop;
 18 exit:
 19 #else
 20         __asm__ __volatile__(
 21                 "ldr r2, [%2]
"
 22                 "mov r0, #0
"
 23                 "loop:
"
 24                 "ldr r1, [%0, r0]
"
 25                 "cmp r1, r2
"
 26                 "beq exit
"
 27                 "str r1, [%1, r0]
"
 28                 "add r0, r0, #1
"
 29                 "b loop
"
 30                 "exit:
"
 31                 :
 32                 :"r" (source), "r" (dest), "r" (&c)
 33                 :"r0", "r1", "r2", "memory"
 34         );
 35 #endif
 36 
 37         printf("%s
", p);
 38 }

  注意:最后一行要写上保护(r1,r2,r3)否则会段错误。

原文地址:https://www.cnblogs.com/luoxiang/p/4057629.html