马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
ARM支持的16个协处理器,用于各种协处理器操作,最常使用的协处理器是用于控制片上功能的系统协处理器,例如控制ARM720上的高速缓存存储器管理单元等,也开发了浮点ARM协处理器,还可以开发专用的协处理器。在程序执行过程中,每个协处理器忽略属于ARM处理器核其他协处理器的指令。当一个协处理器硬件不能执行属于它的协处理器指令时,将产生未定义指令异常中断。在该异常中断处理程序时,可通过软件模拟该硬件操作。例如,如果系统中不包含向量浮点运算器,则可选择浮点运算软件模拟包来支持向量浮点运算。 如,如果系统不包含向量浮点运算器,则可选择浮点运算软件模拟包来支持向量浮点运算。 ARM协处理器指令根据其用途主要分为以下3类: 用于ARM处理器初始化ARM协处理器的数据操作指令; 用于ARM处理器的寄存器和ARM协处理器间的数据传送指令; 用于ARM协处理器的寄存器和内存单元之间的传送数据。 1.
协处理器的数据操作 协处理器数据操作完全是协处理器内部的操作,它完成协处理器寄存器的状态改变。一个例子是浮点加法,在浮点协处理器中2个寄存器相加,结果放在第3个寄存器。这些指令用于控制数据在协处理器寄存器内部的操作。标准格式遵循ARM整数数据处理指令的3地址形式,但是所有协处理器域可能会有其他解释。 二进制编码 协处理器数据处理指令的二进制编码如图:
说明 ARM对可能存在的任何协处理器提供这条指令。如果它被一个协处理器接受,则ARM继续执行下一条;如果它没有被接受,则ARM将产生未定义中止的陷阱(可用来实现“协处理器丢失”的软件仿真)。 通称,与协处理器编号CP#一致的协处理器将接受指令,执行由Cop1和Cop2域定义的操作,使用CRn和CRm作为源操作数,并将结果放到CRd。其中,Cop1和Cop2为协处理器操作码,CRn、CRm和CRd均为协处理器的寄存器,指令中不涉及ARM处理器的寄存器和存储器。 汇编格式 CDP{<cond>}<CP#>,<Cop1>,CRd,CRn,CRm{,<Cop2>} 举例 CDP P5,2,C12,C10,C3,4 ;协处理器p5的操作初始化。其中,
;操作码1为2,操作码2为4,目标寄存器
;为C12,源操作寄存器为C10和C3
注意事项 对于Cop1、CRn、CRd、Cop2和CRm域的解释与协处理器有关。以上解释是推荐的用法,它最大程度地与ARM开发工具兼容。 凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网
|