打印
[ARM入门]

ARM 核的三种工作状态

[复制链接]
1083|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
千岁寒|  楼主 | 2018-8-15 14:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ARM的体系结构中,可以工作在三种不同的状态:   
一是ARM状态              ARM:arm处理器工作于32位指令的状态,所有指令均为32位。   
二是Thumb状态及Thumb-2状态            
              Thumb:     arm执行16位指令的状态,即16位状态。                  
              Thumb-2:    这个状态是ARM7版本的ARM处理器所具有的新的状态,新的thumb-2内核技术兼有16位及32位指令,实现了更高的性能,更有效的功耗及更少地占用内存。总的来说,感觉这个状态除了兼有arm和thumb的优点外,还在这两种状态上有所提升、优化。   
三是调试状态               处理器停机时进入调试状态。

(以下 lable 可以理解为一个函数名、或者一个跳转标志位——地址)由arm状态切换到thumb
  状态将寄存器的最低位设置为1
       BX指令:R0[0]=1,则执行BX
  R0指令将进入thumb状态 LDR R0,=lable+1  BX R0由thumb状态切换到ARM状态
    寄存器最低位设置为0
     BX指令:R0[0]=0,则执行BX
      R0指令将进入arm状态LDR R0,=lable BX R0

无论是ARM还是Thumb,其指令在存储器中都是边界对齐的(2字节或者4字节对齐,最低位不起作用!)。因此,在执行跳转过程中,PC寄存器中的最低位被舍弃,不起作用。在BX指令的执行过程中,最低位正好被用作状态判断的标志,不会造成存储器访问不对齐的错误。
当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。
        注意:ARM处理器复位后开始执行代码时总是只处于ARM状态;
                  Cortex-M3只有Thumb-2状态和调试状态;
                  由于Thumb-2具有16位/32位指令功能,因此有了thumb-2就无需Thumb了。
                  另外,具有Thumb-2技术的ARM处理器也无需再ARM状态和Thumb-2状态间进行切换了,因为thumb-2具有32位指令功能。
    总的说,arm状态与Thumb状态的本质区别就是指令的位数不同,arm是32位的指令状态,而thumb是16位 的指令状态,而thumb-2状态是arm状态和thumb状态的结合和优化。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

244

帖子

4

粉丝