ARM汇编基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

各模式下实际访问的寄存器 用户 系统 管理 中止 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R13_svc R13_abt R13_und R13_irq R14_svc R14_abt R14_und R14_irq R15 无 CPSR R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_fiq R14_fiq 未定义 中断 快中断
主讲:
读R15的限制
�当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前 指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是 8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一 个常量。 �所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当 在程序中计算出该芯片的偏移量。 �计算偏移量程序代码:
•RRX(rotate shift right with extend) :带扩展的循环右移。
•可完成对通用寄存器中的内容进行带扩展的循环右移的操作,按操作数所指定的数量向右 循环移位,左端用进位标志位 C来填充。其中,操作数可以是通用寄存器,也可以是立即数 ( 0~ 31 )。
用于支持虚拟内存和/或存 用于MMU 储器保护 支持硬件协处理器的软件 仿真 未定义指令异常响应时进入此模 式
主讲:
处理器模式
�用户模式:限制你的内存访问并且你不能直接读取硬件设备 �系统模式(SVC 模式):主要用于 SWI(软件中断)和 OS(操作系统)。这个模式有额 外的特权,允许你进一步控制计算机。例如,你必须进入超级用户模式来读取一 个插件(podule)。这不能在用户模式下完成。 �中断模式(IRQ 模式),用来处理发起中断的外设。这个模式也是有特权的。导致 IRQ 的设备有键盘、 VSync (在发生屏幕刷新的时候)、IOC 定时器、串行口、硬盘、 软盘、等等... �快速中断模式(FIQ 模式),用来处理发起快速中断的外设。这个模式是有特权的。 导致 FIQ 的设备有处理数据的软盘,串行端口(比如在 82C71x 机器上的 A5000) 和 Econet。 �IRQ 和 FIQ 之间的区别是对于 FIQ 你必须尽快处理你事情并离开这个模式。IRQ 可以被 FIQ 所中断但 IRQ 不能中断 FIQ。为了使 FIQ 更快,所以有更多的影子寄存 器。FIQ 不能调用 SWI。FIQ 还必须禁用中断。如果一个 FIQ 例程必须重新启用中 断,则它太慢了并应该是 IRQ 而不是 FIQ。
主讲:
应用领域:
•工业控制领域 •无线通讯领域 •网络应用 •消费类电子产品 •成像和安全产品
主讲:
处理器模式
简介: •ARM体系结构支持 7种处理器模式,分别为:用户模式、快 中断模式、中断模式、管理模式、中止模式、未定义模式和 系统模式,如下表所示。这样的好处是可以更好的支持操作 系统并提高工作效率。 ARM完全支持这七种模式。
汇编基础 ARM ARM汇编基础
主讲:郑超
ARM简介
ARM是Advanced RISC Machines的缩写,更早称作: Acorn RISC Machine),ARM架构,过去称作高级精简指令 集机器,是一个 32位精简指令集( RISC)处理器架构,其广 泛地使用在许多嵌入式系统设计。由于节能的特点, ARM处 理器非常适用于移动通信领域,符合其主要设计目标为低成 本、高性能、低耗电的特性。公司的特点是只设计芯片,而 不生产。它将技术授权给世界上许多著名的半导体、软件和 OEM(代工生产)厂商,并提供服务。 为了清楚地表达每个 ARM应用实例使用的指令集, ARM公司定义了7种主要的 ARM指令集体系结构版本,以版 本号V1~V7表示。目前正在使用的版本是 V4、V5、和V6、 V7。 ARM CPU主要有ARM7、ARM9、ARM10、ARM11 系列,以及其变种: SecurCore、Xscale等。
主讲:
处理器模式
处理器模式 用户 系统 快中断 中断 管理 中止 未定义 (usr) (sys) (fiq) (irq) (svc) (abt) (und) 说明 正常程序工作模式 用于支持操作系统的特权 任务等 支持高速数据传输及通道 处理 用于通用中断处理 操作系统保护代码 备注 不能直接切换到其它模式 与用户模式类似,但具有可以直 接切换到其它模式等特权 FIQ异常响应时进入此模式 IRQ异常响应时进入此模式 系统复位和软件中断响应时进入 此模式
10001
10010
中断
10011
管理
10111
中止
11011
未定义
主讲:
R0~R14,PC, CPSR
11111
系统
SPSR(保存程序状态寄存器)
与CPSR的值一样,由硬件自动将异常发生前的 CPSR的 值放到SPSR中,以便将来在异常处理结束后,程序能恢复原 来CPSR的值。
主讲:
流水线
� ARM处理器使用流水线来增加处理器指令流的速度。这样 可使几个操作同时进行,并使处理和存储器系统连续操作, 能提供0.9MIPS/MHz(MIPS 表示每秒多少百万条指令)的指 令执行速度。 � ARM的流水线分3级,分别为: 取指�译码�执行 �ARM7是冯·诺依曼结构,采用了典型的三级流水线,而 ARM9则是哈佛结构,采用五级流水线技术,而 ARM11则更 是使用了7级流水线。
•SUBS •MOV R0,R0,#1 ;R0减1,结果放入R0,并且影响标志位 R0,#0xFF000 ;将立即数0xFF000装入R0寄存器
主讲:
ARM处理器寻址方式
寻址方式分类——寄存器移位寻址 • 寄存器移位寻址是 ARM指令集特有的寻址方式。当第 2个操 作数是寄存器移位方式时,第 2个寄存器操作数在与第 1个操 作数结合之前,选择进行移位操作。寄存器移位寻址指令举 例如下:
条件代码标志
31 30 29 28 27 26
CPSR寄存器的格式 保留
8 7 6 5
控制位
4 3 2 1 0
N
Z
C
V
Q —
...

I
F
T M4 M3 M2 M1 M0
置1时结果溢出 加法时置1表示进 位,减法时置0表示 借位 置1时结果为零 置0时结果为正数 数或零
模式位 置0时ARM状态 下运行 置1时FIQ禁止 置1时IRQ禁止 主讲:
•MOV •ANDS R0,R2,LSL #3 ;R2的值左移3位,结果放入R0, ;即是R0=R2×8 R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相 ;“与”操作,结果放入R1
主讲:
ARM处理器寻址方式
寻址方式分类——寄存器移位寻址
LSL移位操作: LSR移位操作: ASR移位操作: ROR移位操作: RRX移位操作: 0 0
C
主讲:
ARM处理器寻址方式
寻址方式分类——寄存器移位寻址 •LSL或ASL(logic shift left) :逻辑左移或算术左移
•可完成对通用寄存器中的内容进行逻辑(或算术)的左移操作,按操作数所指 定的数量向左移位,低位用零来填充
•LSR(logic shift right) :逻辑右移
•可完成对通用寄存器中的内容进行右移的操作,按操作数所指定的数量向右移位,左端用 零来填充。其中,操作数可以是通用寄存器,也可以是立即数 ( 0~ 31 )。
主讲:
内部寄存器
简介 •在ARM处理器内部有 37个用户可见的寄存器。 31个通用的, 6个状态寄存器。 •在不同的工作模式和处理器状态下,程序员可以访问的寄存 器也不尽相同。
主讲:
寄存器 寄存器在汇 类别 编中的名称 R0(a1) R1(a2) R2(a3) R3(a4) R4(v1) R5(v2) 通用寄 存器和 程序计 数器 R6(v3) R7(v4) R8(v5) R9(SB,v6) R10(SL,v7) R11(FP,v8) R12(IP) R13(SP) R14(LR) R15(PC) 状态寄 存器 CPSR SPSR
•ASR(arithmetic shift right) :算术右移
•可完成对通用寄存器中的内容进行右移的操作,按操作数所指定的数量向右移位,左端用 第31位的值来填充。其中,操作数可以是通用寄存器,也可以是立即数 ( 0~ 31 )。
•ROR(rotate shift right ):循环右移
•可完成对通用寄存器中的内容进行循环右移的操作,按操作数所指定的数量向右循环移 位,左端用右端移出的位来填充。其中,操作数可以是通用寄存器,也可以是立即数 ( 0~ 31 )。显然,当进行 32位的循环右移操作时,通用寄存器中的值不改变。
•MOV R1,R2 ;将R2的值存入R1 •SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0
主讲:
ARM处理器寻址方式
寻址方式分类——立即数寻址 •立即寻址指令中的操作码字段后面的地址码部分即是操作数 本身,也就是说,数据就包含在指令当中,取出指令也就取 出了可以立即使用的操作数 (这样的数称为立即数 )。立即寻 址指令举例如下:
主讲:
三级流水线的最佳运行图
�PC总是指向第 3条指令。 �对于ARM状态下指令, PC值=当前程序执行位置 +8是。 �虽然存在多级别流水线,但 ARM出于统一和前后兼容的考 虑,但上诉结论是统一的。
主讲:
ARM处理器寻址方式
寻址方式分类 • 寻址方式是根据指令中给出的地址码字段来实现寻找真实操 作数地址的方式。 ARM处理器基本寻址方式。
R0~R14,PC, CPSR R0~R7,R8_fiq~R14_fiq,PC, CPSR, SPSR_fiq R0~ R12,R13_irq,R14_irq,PC, CPSR, SPSR_irq R0~R12,R13_svc,R14_svc, PC,CPSR, SPSR_svc R0~ R12,R13_abt,R14_abt,PC, CPSR, SPSR_abt R0~R12,R13_und,R14_und, PC,CPSR,SPSR_und
•1.寄存器寻址; •2.立即数寻址; •3.寄存器移位寻址; •4.寄存器间接寻址; •5.基址寻址; •6.堆栈寻址; •7.块拷贝寻址; •8.相对寻址。
主讲:
ARM处理器寻址方式
寻址方式分类——寄存器寻址 • 操作数的值在寄存器中,指令中的地址码字段指出的是寄存 器编号,指令执行时直接取出寄存器值来操作。寄存器寻址 指令举例如下:
Q:在ARM V5及以上版本的 E系列处理器中,用 Q标志位指 示增强的DSP运Fra Baidu bibliotek指令是否发生了溢出。
主讲:
CPSR 模式位设置表 CPSR模式位设置表
M[4:0] 模式 可见的Thumb状态寄存器 可见的ARM状态寄存器
10000
用户 快中断
R0~R7,SP,LR,PC,CPSR R0~ R7,SP_fiq,LR_fiq,PC,CPSR, SPSR_fiq R0~ R7,SP_irq,LR_irq,PC,CPSR, SPSR_fiq R0~ R7,SP_svc,LR_svc,PC,CPSR, SPSR_svc R0~ R7,SP_abt,LR_abt,PC,CPSR, SPSR_abt R0~ R7,SP_und,LR_und,PC,CPSR, SPSR_und R0~R7,SP,LR,PC,CPSR
主讲: SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq
内部寄存器
寄存器R0~R12是普通寄存器。 R13是堆栈指针寄存器(又名 SP,stack pointer),用于存放堆 栈的栈顶指针。 R14是链接寄存器(又名 LR,Linked Register),用于存放子 程序的返回地址。 R15程序计数器(又名 PC,Program Counter),它的值是当 前正在执行的指令在内存中的位置。
SUB STR LDR SUB R1,PC,#4 PC,[R0] R0,[R0] R0,R0,R1 ;R1=下面STR指令的地址 ;保存STR指令地址 +偏移量 ;然后重装 ;计算偏移量
正常操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续 执行(相当于执行一次无条件跳转)。 主讲:
程序状态寄存器 简介:
相关文档
最新文档