`
javababy1
  • 浏览: 1171605 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ARM学习笔记(三)--Thumb状态下寄存器

 
阅读更多

Thumb状态下寄存器

    Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、链接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。

    图说明了Thumb状态下的寄存器组织。

    在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制地访问这些寄存器,将其用作快速的暂存器。使用带特殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMPADD指令进行比较或加上低位寄存器中的值。

    ARM状态寄存器与Thumb状态寄存器之间的关系

    1.Thumb 状态 R0~R7 ARM状态 R0~R7相同

    2.Thunb 状态CPSR(无SPSR)与ARM状态CPSR相同。由于Thumb指令集不包括MSRMRS指令,如果用户需要修改CPSR的任何标志位,必须回到ARM模式。通过BXBLX指令来改变指令接模式,而且当完成复位(Reset)或者进入到异常模式时,将会被自动切换到ARM模式(注意:所有的异常处理都是在ARM状态下处理的,在Thumb状态下,如果有任何中断或者异常标志出现,处理器自动切换到ARM状态下进行异常处理,完成后,有自动切换到Thumb状态

    3.Thumb状态下的SP对应于ARM状态下的R13。

    4.Thumb状态下的LR对应于ARM状态下的R14。

    5.Thumb状态下的程序计数器对应于ARM状态下R15。

    由以上5个关系叉可以总结出Thumb、ARM状态寄存器的映射图

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics