微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM应用系统开发详解:第3章 ARM微处理器的指令系统

ARM应用系统开发详解:第3章 ARM微处理器的指令系统

时间:11-20 来源:互联网 点击:

用系统例程的类型,相关参数通过通用寄存器传递,当指令中24位的立即数被忽略时,用户程序调用系统例程的类型由通用寄存器R0的内容决定,同时,参数通过其他通用寄存器传递。

指令示例:

SWI0x02;该指令调用操作系统编号位02的系统例程。

2、BKPT指令

BKPT指令的格式为:

BKPT16位的立即数

BKPT指令产生软件断点中断,可用于程序的调试。

3.4Thumb指令及应用

为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集。Thumb指令集是ARM指令集的一个子集,允许指令编码为16位的长度。与等价的32位代码相比较,Thumb指令集在保留32代码优势的同时,大大的节省了系统的存储空间。

所有的Thumb指令都有对应的ARM指令,而且Thumb的编程模型也对应于ARM的编程模型,在应用程序的编写过程中,只要遵循一定调用的规则,Thumb子程序和ARM子程序就可以互相调用。当处理器在执行ARM程序段时,称ARM处理器处于ARM工作状态,当处理器在执行Thumb程序段时,称ARM处理器处于Thumb工作状态。

与ARM指令集相比较,Thumb指令集中的数据处理指令的操作数仍然是32位,指令地址也为32位,但Thumb指令集为实现16位的指令长度,舍弃了ARM指令集的一些特性,如大多数的Thumb指令是无条件执行的,而几乎所有的ARM指令都是有条件执行的;大多数的Thumb数据处理指令的目的寄存器与其中一个源寄存器相同。

由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。在一般的情况下,Thumb指令与ARM指令的时间效率和空间效率关系为:

—Thumb代码所需的存储空间约为ARM代码的60%~70%

—Thumb代码使用的指令数比ARM代码多约30%~40%

—若使用32位的存储器,ARM代码比Thumb代码快约40%

—若使用16位的存储器,Thumb代码比ARM代码快约40%~50%

—与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%

显然,ARM指令集和Thumb指令集各有其优点,若对系统的性能有较高要求,应使用32位的存储系统和ARM指令集,若对系统的成本及功耗有较高要求,则应使用16位的存储系统和Thumb指令集。当然,若两者结合使用,充分发挥其各自的优点,会取得更好的效果。

3.5本章小节

本章系统的介绍了ARM指令集中的基本指令,以及各指令的应用场合及方法,由基本指令还可以派生出一些新的指令,但使用方法与基本指令类似。与常见的如X86体系结构的汇编指令相比较,ARM指令系统无论是从指令集本身,还是从寻址方式上,都相对复杂一些。

Thumb指令集作为ARM指令集的一个子集,其使用方法与ARM指令集类似,在此未作详细的描述,但这并不意味着Thumb指令集不如ARM指令集重要,事实上,他们各自有其自己的应用场合。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top