ARM ABI总体概述

来源:互联网 发布:数据录入员有前途吗 编辑:程序博客网 时间:2024/05/18 03:41

最近在调一个cache功能的时候,arm突然无故挂掉,通过仿真器跟发现内存无端被改。

为分析linux的异常,故要分析栈,网上google了一下,对这个栈各家所云不到痛处,突然看到有网友提到有个ARM过程调用标准(APCS)的文档专门说这个的,于是上网看了下,平时只注重cpu内部实现功能,忽略了软件的标准。

原来arm是有个abi的标准,定义了arm的可执行文件的标准接口,elf文件标准,过程调用标准,运行时abi标准,c库标准,c++的abi标准,以及异常句柄的abi标准,这一套完整地定义了arm体系下可自行文件是怎么定义,怎么运行的。除此,arm也同时符合c++通用标准和通用elf标准。这些文档对我非常有用。

下面链接是ARM的技术文档的地址,这里是我学习笔记用,实际还是看官方文档为准。

http://infocenter.arm.com/help/index.jsp

下面是arm体系的一个概述图:



由图中可以看出,arm的可执行文件的格式分4中:

1.RTOS或者裸机的静态镜像模式

2.PLAM的单一地址空间的DLL模式。

3.symbian的虚拟地址空间DLL模式。

4.大部分符合SVr4的操作系统使用的DSO模式。

其中symbian和SVr4的不同在于SVr4支持代码支持在不同进程运行在不同的进程空间上,而Symbian标准不支持。

在此基础上,这些可执行文件在实际运行的时候,必须支持arm定义的过程调用标准,C++ABI标准,ELF标准,DWARF标准,运行时ABI和C库ABI标准,ARM调试ABI标准。

这一整套构成了ARM体系下的ABI体系。

ABI标准具体体现在了ARM C/C++扩展和ARM汇编上。

0 0
原创粉丝点击