手机开发实战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的返回值。
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的返回值。
相关文章推荐
- 【Nginx 3】FTP远程文件下载
- 设计模式系列(三)工厂模式
- NSDate使用
- 网络协议分析
- OSPF中LSA主要的5种类型
- Java编译时异常和运行时异常
- 手机开发实战178——NUCLEUS介绍2
- easyfinding(codevs 3280)
- 数据结构与算法之九 树结构
- 数据结构与算法之九 树结构
- 数据结构与算法之九 树结构
- sha512散列(C语言)
- Linux下切换capslock和control键
- 在wamp的环境下配置虚拟域名
- 删除单链表指定元素
- 程序自动分析 [Bzoj 4195,Noi 2015]
- 电影《小萝莉的猴神大叔》
- 手机开发实战177——NUCLEUS介绍1
- 《程序员的呐喊》读书笔记(一)
- struts的ognl的应用实例