文档库 最新最全的文档下载
当前位置:文档库 › arm裸机编程

arm裸机编程

arm裸机编程
arm裸机编程

一.ARM指令的特点

以RISC为架构体系的ARM指令集的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多。ARM处理器都是所谓的精简指令集处理机

(RISC)。其所有指令都是利用一些简单的指令组成的,简单的指令意味着相应硬件线路可以

尽量做到最佳化,而提高执行速率,相对的使得一个指令所需的时间减到最短。

而因为指令集的精简,所以许多工作都必须组合简单的指令,而针对较复杂组合的工作便需要由编译器来执行,而 CISC 体系的X86指令集因为硬体所提供的指令集较多,所以许多工

作都能够以一个或是数个指令来代替,编译器的工作因而减少许多。

除了具备上述RISC的诸多特性之外,可以总结ARM指令集架构的其它一些特点如下:

1.体积小,低功耗,低成本,高性能

2.支持 Thumb ( 16 位) /ARM ( 32 位)双指令集,能很好的兼容 8 位 /16 位器件;

3.大量使用寄存器,指令执行速度更快; 4.大多数数据操作都在寄存器中完成; 5.寻址方式灵活简单,执行效率高; 6.指令长度固定; 7.流水线处理方式 8. Load_store结构另外,ARM的一些非RISC思想的指令架构:

1.允许一些特定指令的执行周期数字可变,以降低功耗,减小面积和代码尺寸。

2.增加了桶形移位器来扩展某些指令的功能。 3.使用了16位的Thumb指令集来提高代码密度。 4.使用条件执行指令来提高代码密度和性能。 5.使用增强指令来实现数据信号处理的功能。

二.ARM汇编语言程序设计实例

2.1 问题描述

链表是最基本的数据结构之一。其实现思想是每一个链表节点包含数据域和指针域两个属性,指

针域保存下一节点的地址值,各个节点由指针域链接起来。

链表的插入操作时间复杂度为常量级别,只需进行节点指针域的调整。链表的正序排序可以使

用常用的插入排序法,当发现一个不满足序列的节点A时,从链表头节点到当前节点进行遍历,

直到找到第一个数据域大于该节点数据域的节点B,然后调整指针域将A节点插入在B节点之前。

链表遍历操作即根据各指针域逐一访问链表中的元素。

本程序基于以上叙述,实现链表的创建、插入排序、遍历操作。使用ARM汇编语言进行程序设

计,编译调试基于ADS集成开发环境。

2.2 程序流程图

图(1)为本程序创建链表的流程图。创建过程中,对源数据数组的每一个元素进行遍历,使用

当前遍历值创建一个链表节点,并调整链表指针域值使新节点链接在原链表上,插入方法采用的是

头部插入,也即每一个新的节点都插入在链表头部,因此当链表插入完成进行遍历输出时,元素顺

序应是源数据数组的逆序。

相关文档