当前位置: 代码迷 >> 单片机 >> 关于linux 混合编程的简单有关问题
  详细解决方案

关于linux 混合编程的简单有关问题

热度:108   发布时间:2016-04-28 15:13:00.0
关于linux 混合编程的简单问题
#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;
}


只保证编译通过,逻辑部分本来就有问题的,没改。
------解决方案--------------------
引用:


这是怎么回事,是不是arm-linux-gcc  没安装好吗?

http://blog.sina.com.cn/s/blog_791a8d4d0100swd1.html
参考这个