ARM ® and Thumb ®-2 指令系统

指令表关键词       
Rm {, <opsh>} 寄存器移位方式,将寄存器的移位结果作为操作数而Rm值保持不变      
<Operand2> 灵活的使用第二个操作数。移位和循环最合适作为第二操作数的一部分使用 <reglist> 由大括号括起来的一些用逗号分割的寄存器列表。如:{ and }.  
<fields> 查看程序状态寄存器域目录. <reglist-PC> 加载或存储的寄存器列表,但不含程序计数器寄存器。  
<PSR> 包含CPSR (当前程序状态寄存器) 或SPSR (程序状态保存寄存器)  <reglist+PC> 须有程序计数器寄存器列表。将SPSR拷贝到CPSR中,用于从异常处理返回。  
C*, V* 标志值在V4及之前的架构中是不确定的, 在V5及之后则是不变的. +/- 正或负. (+ 有可能被忽略.)  
<Rs|sh> 可能是Rs或一个可移位的立即数. 值由寄存器中可用的各种移位方式进行  § ARM体系结构版本  
  任意位循环移动得到 <iflags> 中断标志. 一个或多个异常,中断,快速中断.   
x,y B 指寄存器低位 [15:0], 而 T 指高位[31:16]. (Bottom,Top) <p_mode> 识别处理机模式  
<imm8m> ARM: 32位常数,由一个8位数循环右移偶数位得到。  SPm 由<p_mode>区分的处理机模式的堆栈指针  
  Thumb: 32位常数,由一个8位数左移一位或多位数得到。 <lsb> 位域的最低有效位  
  型如以下形式之一: 0xXYXYXYXY, 0x00XY00XY or 0xXY00XY00 <width> 位域的宽度. <width> + <lsb> 须<=32  
<prefix> 相似指令的前缀 {X} RsX 是在x置位时Rs循环移动16位. 否则, RsX=Rs.   
{IA|IB|DA|DB} 分别指:传送后地址增加, 传送前地址增加, 传送后地址减少, 传送前地址减少4个字节。 {!} 若 ! 存在 (预先变址),则数据传送后更新基址寄存器(Rn)。   
  IB和 DA在Thumb状态下是不可用的. 如未指定,默认使用IA. {S} 若S存在更新标志位  
<size> B , SB, H, or SH, 分别指:字节, 带符号位的字节, 半字, 带符号位的半字。 {T} 若T存在给用户模式特权  
  SB 和 SH在STR 指令中不可用。 {R} 若R存在恢复最近的结果,否则丢弃结果。  
时间: 2024-10-13 04:39:55

ARM ® and Thumb ®-2 指令系统的相关文章

对于Android NDK编译器ARM和Thumb模式的理解

编译NDK项目时,编译器无法识别arm汇编,设置LOCAL_ARM_MODE := arm后问题解决, NDK文档上对LOCAL_ARM_MODE的说明如下: LOCAL_ARM_MODE By default, ARM target binaries are generated in 'thumb' mode, where each instruction are 16-bit wide, and linked with /thumb STL libraries. You can define

ARM处理器的寄存器,ARM与Thumb状态,7中运行模式

** ARM处理器的寄存器,ARM与Thumb状态,7中运行模式 分类: 嵌入式 ARM处理器工作模式一共有 7 种 : USR  模式    正常用户模式,程序正常执行模式 FIQ模式(Fast Interrupt Request)     处理快速中断,支持高速数据传送或通道处理 IRQ模式     处理普通中断 SVC模式(Supervisor)     操作系统保护模式,处理软件中断swi  reset ABT  中止(Abort mode){数据.指令}    处理存储器故障.实现虚拟

ARM中13个必知知识点详解

ARM处理器的优点相信不用多说,大家都了解,其非常适合在嵌入式学习初期使用,在开始使用ARM进行实际操作之前,还是希望大家能够了解一些其使用过程中一些注意事项.接下来我们就一起来看看ARM中有哪些需要注意的事项吧. MAM使用注意事项 当改变MAM定时值时,必须先通过向MAMCR写入0来关闭MAM,然后将新值写入MAMTIM.最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM.对于低于20MHz的系统时钟,MAMTIM设定为001.对于20MHz到40MHz之间的系统时钟,建议将Fla

ARM Compiler toolchain Compiler -- Supported ARM architectures

--cpu=name This option enables code generation for the selected ARM processor or architecture. Syntax --cpu=name Where: name is the name of a processor or architecture. If name is the name of a processor, enter it as shown on ARM data sheets, for exa

【嵌入式Linux+ARM】ARM体系结构与编程(ARM汇编指令)

自己的一些简单的总结,也是最常用的ARM汇编指令,之后也会不断的补充完善. 1. 汇编系统预定义的段名 .text    @代码段 .data   @初始化数据段 .bss    @未初始化数据段 需要注意的是,源程序中.bss段应该在.text之前. 2.定义入口点 汇编程序的缺省入口是 start标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点. .text .global _start _start: 3 .word用法 word expression就是在当前位置放一个wo

GNU ARM汇编语法

http://wenku.baidu.com/view/812a698c84868762caaed55d.html?re=view ARM汇编源程序有两种风格: ARM官方推荐的风格,所有的指令都大写.常用在windows下的IDE中. GNU风格的汇编风格,所有的指令都小写.常用在与Linux相关的工具中. 注释符号: GNU arm汇编所采用的注释符号是@符号,同样c语言中的 // 和 /* */ 两种类型的注释方法在GNU arm汇编中也被支持. 宏定义: 在GNU arm汇编程序中可以使

GNU风格 ARM汇编语法指南

汇编源程序一般用于系统最基本的初始化:初始化堆栈指针.设置页表.操作 ARM的协处理器等.这些初始化工作完成后就可以跳转到C代码main函数中执行. 1.  GNU汇编语言语句格式 任何Linux汇编行都是如下结构:[<label>:][<instruction or directive or pseudo-instruction>} @comment l         instruction为指令 l         directive为伪操作 l         pseudo

原子操作--ARM架构

说明:内核版本号为3.10.101 一.ARM架构中的原子操作实现 在原子操作(一)中我们已经提到,各个架构组织为“复仇者”联盟,统一了基本的原子变量操作,这里我们就拿atomic_dec(v)来看看通天ARM的实现. 首先是atomic_dec(v)原子减一操作的宏定义.这个宏的定义在文件arch/arm/include/asm/atomic.h中: #define atomic_dec(v) atomic_sub(1, v) 对于ARM架构不同的版本,stomic_sub(i,v)的实现是不

ARM7与ARM Cortex比较

ARM7与ARM Cortex比较  1.ARM实现方法 ARM Cortex是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总 线).从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快.根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值. ARM公司对Cortex的定位是:向专业嵌入式市场提供低成本.低功耗的芯片.在成本和功耗方面,Cortex具有相当好的性能,ARM公司认为它特别适用于汽车