zoukankan      html  css  js  c++  java
  • ATPCS规则2

    参数传递规则
    1.参数不超过4个时,可以使用寄存器R0R3来传递参数,当参数超过4个时,还可以使用数据栈来传递参数。
    2.结果为一个32位整数时,可以通过寄存器R0返回
    3.结果为一个64位整数时,可以通过寄存器R0R1返回,依次类推。
    汇编程序、C程序及C++程序相互调用
    C程序调用汇编程序:
    o汇编程序的设置要遵循ATPCS规则,保证程序调用时参数的正确传递。o在汇编程序中使用EXPORT伪指令声明本子程序,使其它程序可以调用此子程序。o在C语言程序中使用extern关键字声明外部函数(声明要调用的汇编子程序),即可调用此汇编子程序。o调用汇编的C函数:o示例#include
    extern void strcopy(char *d,const char *s) //声明外部函数,即要调用的汇编
    //子程序int main(void)
    {
    const char *srcstr=“First string-source”;//定义字符串常量
    char dstsrt[] =“Second string-destination”;//定义字符串变量
    printf(“Before copying:\n”);
    printf(“’%s’\n ‘%s\n,”srcstr,dststr); //显示源字符串和目标字符串的内容
    strcopy(dststr,srcstr); //调用汇编子程序,R0=dststr,R1=srcstr
    printf(“After copying:\n”)
    printf(“’%s’\n ‘%s\n,”srcstr,dststr); //显示strcopy复制字符串结果
    return(0);
    }
    o被调用汇编子程序:AREASCopy,CODE,READONLYEXPORT strcopy;声明汇编程序strcopy,以便外部程序引用strcopy;R0为目标字符串的地址;R1为源字符串的地址;LDRB R2,[R1],#1 ;读取字节数据,源地址加1STRB R2,[R0],#1 ;保存读取的1字节数据,目标地址加1CMP r2,#0;判断字符串是否复制完毕BNE strcopy;没有复制完毕,继续循环MOV pc,lr;返回END汇编程序调用C程序
    o汇编程序的设置要遵循ATPCS规则,保证程序调用时参数的正确传递.o在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数.o在调用C程序时,要正确设置入口参数,然后使用BL调用.o汇编调用C程序的C函数:int sum5(int a,lit b, int c,int d,int e)
    {
    return(a+b+c+d+e); //返回5个变量的和
    }
    o汇编调用C程序的汇编程序AREAsample, CODE,READONLYIMPORT sum5;声明外部标号sum5,C函数sum5()

    嵌入式C编程
    概述:
    C语言的优点是运行速度快、编译效率高、移植性好和可读性强。C语言支持模块化程序设计,支持自顶
    向下的结构化程序设计方法。因此在嵌入式程序设计中经
    常会用到C语言程序设计。
    嵌入式C语言程序设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。也就是说它首先是C
    言程序设计,因此必须符合C语言基本语法,只是它是面向
    嵌入式的应用而设计的程序。
    oC语言的预处理伪指令在嵌入式程序设计中的应用。1、文件包含伪指令
    格式:#include <头文件名;标准头文件#include 头文件名.h”;自定义头文件2、宏定义伪指令
    格式:define宏标识符宏体

    3、条件宏:先测试是否定义过某宏标识符,然后决定如何处理。这样做是为了避免重复定义。
    格式:
    #ifdef宏标识符#undef宏标识符#define宏标识符宏体#else#define宏标识符宏体#endif
    4、条件编译伪指令
    格式
    #if(条件表达式1#elif(条件表达式2#elif(条件表达式n#else#endif这样,编译时,编译器仅对#if()…#endif之间满足某一条件表达式的源文件部分进行编译。
    使用寄存器变量
    当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的存取时间。为此,C语言提供了一种变量,即寄存器变量。这种变量存放在CPU的寄存器中,
  • 相关阅读:
    HDU 5412 CRB and Queries 动态整体二分
    POJ 2104 K-th Number
    【模板】可持久化线段树(主席树)
    【AHOI2005】病毒检测
    【HNOI2004】L语言
    P1837 单人纸牌_NOI导刊2011提高(04)
    【USACO15FEB】审查(黄金)Censoring (Gold)
    【USACO12JAN】视频游戏的连击Video Game Combos
    专访阿里云资深技术专家黄省江:中国SaaS公司的成功之路
    干货来了!2019阿里云合作伙伴峰会SaaS加速器专场回顾合集:嘉宾分享、深度解读
  • 原文地址:https://www.cnblogs.com/feisky/p/1586440.html
Copyright © 2011-2022 走看看