9.1 协处理器指令 ARM 体系结构允许通过增加协处理器来扩展指令集。最常用的协处理器是用于控制片 上功能的系统协处理器。例如控制 Cache 和存储管理单元的 CP15 寄存器。此外,还有用于 浮点运算的浮点 ARM协处理器,各生产商还可以根据需要开发自己的专用协处理器。 ARM协处理器具有自己专用的寄存器组,它们的状态由控制 ARM状态的指令的镜像指 令来控制。 程序的控制流指令由 ARM 处理器来处理,所有协处理器指令只能同数据处理和数据传 送有关。按照 RISC 的 Load/Store 体系原则,数据的处理和传送指令是被清楚分开的,所以 它们有不同的指令格式。 ARM处理器支持 16个协处理器,在程序执行过程中,每个协处理器忽略 ARM和其他 协处理器指令。当一个协处理器硬件不能执行属于它的协处理器指令时,将产生一个未定义 指令异常中断,在该异常中断处理过程中,可以通过软件仿真该硬件操作。如果,一个系统 中不包含向量浮点运算器,则可以选择浮点运算软件包来支持向量浮点运算。 ARM协处理器可以部分地执行一条指令,而后产生中断。如除法运算除数为 0和溢出, 这样可以更好地处理运行时产生(run-time-generated)的异常。但是,指令的部分执行是由 协处理器完成的,此过程对 ARM 来说是透明的。当 ARM 处理器重新获得执行时,它将从 产生异常的指令处开始执行。 对某一个协处理器来说,并不一定用到协处理器指令中的所有的域。具体协处理器如何 定义和操作完全由协处理器的制造商自己决定,因此 ARM 协处理器指令中的协处理器寄存 器的标识符以及操作助记符也有各种不同的实现定义。程序员可以通过宏定义这些指令的语 法格式。 ARM协处理器指令分以下 3类。 • 协处理器数据操作。协处理器数据操作完全是协处理器内部操作,它完成协处理器寄 存器的状态改变。如浮点加运算,在浮点协处理器中两个寄存器相加,结果放在第 3个寄存 器中。这类指令包括 CDP指令。 • 协处理器数据传送指令。这类指令从寄存器读取数据装入协处理器寄存器,或将协处 理器寄存器的数据装入存储器。因为协处理器可以支持自己的数据类型,所以每个寄存器传 送的字数与协处理器有关。ARM 处理器产生存储器地址,但传送的字节由协处理器控制。 这类指令包括 LDC和 STC指令。 • 协处理器寄存器传送指令。在某些情况下,需要 ARM处理器和协处理器之间传送数 据。如一个浮点运算协处理器,FIX指令从协处理器寄存器取得浮点数据,将它转换为整数, 并将整数传送到 ARM 寄存器中。经常需要用浮点比较产生的结果来影响控制流,因此,比 较结果必须传送到 ARM的 CPSR中。这类协处理器寄存器传送指令包括MCR和MRC。 表 9.1列出了所有协处理器处理指令。 表 9.1 协处理器指令 助 记 符 操 作
- 粉丝: 20
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助