Alpha_dllg的个人空间 https://blog.eetop.cn/1010876 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

ARM之通过构造函数的方式实现内嵌汇编的参数传递

已有 1137 次阅读| 2012-10-20 13:03 |个人分类:ARM

天气: 大风
心情: 平静
         在GNU-ARM下,由于不可以在内嵌汇编中使用C的变量,给内嵌汇编的使用带来了一定的局限性,我们
可以通过构造函数的方式,利用C语言的传参特性,将我们需要的地址、数据(这里面指的是变量,如果是常
的话就没有必要这么麻烦了)传递给内嵌汇编的代码,内嵌汇编通过访问响应的寄存器内容即可。
     
下面给出一个C语言嵌入汇编程序来实现字符串拷贝的操作。

/*ini.s*/

.global _start

.extern Main
              
.text
_start:
      LDR R0,=Main
      BX  R0
      
Stop:
      B Stop      
.end


/*main.c*/
#include<string.h>
#include<stdio.h>

void Asm_cpy(char* ,char* );
void Main()
{   
     int size;
     char *dst_str;
     char *src_str="Good morning,DaLian\0";
     size = strlen(src_str)+1;
     dst_str=(char*) malloc(size);
    
     Asm_cpy(src_str,dst_str);
     
     while(1);
}

void Asm_cpy(char* src,char* dst)
{
     __asm (
            "asm_l:\
             LDRB  R2,[R0],#1;\
             STRB  R2,[R1],#1;\
             TEQ   R2,#0;\
             BNE   asm_l;"
            );
}
   
      

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 2

    评论
  • 304

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-29 02:29 , Processed in 0.026156 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部