C 和 ARM 汇编

1 在ARM C语言程序设计中使用关键字__asm来标识一段汇编指令程序,其格式如下:

  __asm

   {


    }


2 在C++程序中使用C程序的用户自定义的头文件时,必须将其放在伪指令“extern ”C" { }"中。范例如下:

     extern "C"{

               #include "my_c_header.h"

    }


3 C程序调用汇编程序

   汇编程序的设计要遵循ATPCS规则,这样才能保证程序调用时参数的正确传递。

  

   a.  在汇编程序中,使用EXPORT伪指令声明本程序,使得本程序段可以被别的程序调用。

   b.  在C语言中,使用extern关键字声明引用该汇编程序。

   c.   举例:

          //C程序:

          #include <stdio.h>

           

          extern void strcopy(char *d,const char *s);


         int main()

        {

                      const char *srcstr = "First string - source";

                     char dststr [ ] = "Second string - destination";

                     

                      printf("Before copying:\n");

                      printf("%s\n %s\n",srcstr,dststr);

                      strcopy(dststr,srcstr);

                     printf("%s\n %s\n",srcstr,dststr);

                     

                      return 0;

          }


         //汇编程序

          AREA scopy,CODE,READONLY

          EXPORT  strcopy                                    ;使用EXPORT伪操作声明本汇编程序

         strcopy                                                       ;寄存器R0存放第一个参数,即dststr

                                                                             ;寄存器R1存放第二个参数,即srcstr

         LDRB  r2, [r1],   #1                                   ;把r1地址内的数据加载到r2

         STRB  r2, [r0],   #1                                    ;把r2的数据存放到地址r0处

         CMP    r2,#0                                              ;检测R2的内容是否为0.

         BNE     strcopy                                         ;r2不等于0;循环。

       

        END


4   汇编程序调用C语言

       在汇编程序中,使用IMPORT伪指令声明将要调用C程序。   

   

           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值