开始学习ARM汇编

来源:互联网 发布:歼20超音速巡航 知乎 编辑:程序博客网 时间:2024/06/06 02:35

并不是所有的ARM指令可以用C程序实现。尤其是ARM这种需要程序员完成入栈,出栈等操作。ARM的启动代码必须用汇编编写,虽然启动代码大同小异,但是一些细节的差异完全可以导致应用程序的不稳定甚至不能运行。如果是打算掌握ARM,如果连汇编都省过去,那你又能够学到什么东西呢?站在C语言的角度,51,ARM,P4都是完全一样的!  

初学ARM并不需要把每条汇编指令都搞清楚。掌握最基本的最常用的几条指令就可以了。然后找一本较好的参考资料,以后碰到不懂的指令了再回过头来查查。

ARM汇编的应用多集中在前期的ARM接口编程以及后面的bootloeader源码分析上,如uboot源码学习。

ARM汇编分为ARM公司的标准ARM汇编语言和GNU对ARM支持的GNU ARM汇编。ARM标准汇编语言即通常我们使用的ARM公司的开发工具ADS里用的汇编语言。GNU汇编即在LINUX下用GCC编译的汇编。两者语法有少许差异。因此,通常我们下载的LINUX下的ARM接口代码放到ADS下是不能编译通过的,需要进行少许修改。

ARM标准汇编的话,强烈推荐《ARM应用系统开发详解》这本书的第三章和第四章

ARM汇编的必知必会


ARM是一种RISC体系结构的处理器芯片。和传统的CISC体系结构不同,RISC 有以下的几个特点:
◆ 简洁的指令集——为了保证CPU可以在高时钟频率下单周期执行指令,RISC指令集只提供很有限的操作(例如add,sub,mul等),而复杂的操作都需要由这些简单的指令来组合进行模拟。并且,每一条指令不仅执行时间固定,其指令长度也是固定的,这样,在译码阶段就可以对下一条指令进行预取。
◆ Load-Store 结构——这个应该是RISC 设计中比较有特点的一部分。在RISC 中,CPU并不会对内存中的数据进行操作,所有的计算都要求在寄存器中完成。而寄存器和内存的通信则由单独的指令来完成。而在CSIC中,CPU是可以直接对内存进行操作的,这也是一个比较特别的地方。
◆ 更多的寄存器——和CISC 相比,基于RISC的处理器有更多的通用寄存器可以使用,且每个寄存器都可以进行数据存储或者寻址。

原创粉丝点击