C 和 ARM 汇编

来源:互联网 发布:windows loader中文版 编辑:程序博客网 时间:2024/04/19 07:38

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程序。   

   

           

原创粉丝点击