您的位置:首页 > 其它

手机开发实战179——ARM知识介绍

2016-06-13 21:42 232 查看
ARM知识介绍

ARM的相关内容较多,只介绍与软件开发常用的部分知识。

编程常识

微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分。正序存放就是高字节存放在前低字节在后,而逆序存放就是低字节在前高字节在后。例如,十六进制数为A02B,正序存放就是A02B,逆序存放就是2BA0。

ARM体系存储数据的方式,既可以是大字节在前,也可以是小字节在前。

判断方式:

union

       {

              unsigned short a;

              char b[2];

       }u;

 

       u.a = 1;

 

       if (u.b[0] == 1)

       {

              cout <<"big"<<endl;

       }

       else

       {

              cout <<"little"<<endl;

       }

在开发和电脑通讯,及网络应用的手机软件时,要尤其注意。

在ARM的工具链里,定义了统一的函数过程调用标准ATPCS(ARM-Thumb
Procedure Call Standard)。ATPCS定义了寄存器组中的{R0~R3}作为参数传递和结果返回寄存器,如果参数数目超过四个,则使用堆栈进行传递。我们知道内部寄存器的访问速度是远远大于存储器的,所以要尽量使参数传递在寄存器里面进行,即应尽量把函数的参数控制在四个以下。这是理解ATPCS后,应该实现的一种编程风格。

R14也称作子程序连接寄存器(Subroutine Link Register)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: