#include <stdio.h>
void my_strcpy(const char *src, char *dest)
{
char ch;
__asm
{
loop:
ldrb ch, [src], #1
strb ch, [dest], #1
cmp ch, #0
bne loop
}
}
int main()
{
char *a = "forget it and move on!";
char b[64];
my_strcpy(a, b);
printf("original: %s", a);
printf("copyed: %s", b);
return 0;
}
这段代码GCC 编译不过去,求哪位大侠指点,不胜感激!
------解决方案--------------------
哦,明白了,把{改成(
------解决方案--------------------
查下gcc的内联汇编吧,需要加双引号什么的。
------解决方案--------------------
#include <stdio.h>
void my_strcpy(const char *src, char *dest)
{
char ch;
__asm__("loop:\t"
"ldrb %2,[%0,#1]\n\t"
"strb %2,[%1,#1]\n\t"
"cmp %2, #0\n\t"
"bne loop"::"r"(src), "r"(dest), "r"(ch));
}
int main()
{
char *a = "forget it and move on!";
char b[64];
my_strcpy(a, b);
printf("original: %s", a);
printf("copyed: %s", b);
return 0;
}
只保证编译通过,逻辑部分本来就有问题的,没改。
------解决方案--------------------
http://blog.sina.com.cn/s/blog_791a8d4d0100swd1.html
参考这个