当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 入门指导 > 嵌入式开发之arm状态和thumb状态详解

嵌入式开发之arm状态和thumb状态详解 时间:2018-08-03      来源:未知

学习嵌入式开发,那当然会涉及到arm状态和thumb状态,很多初学者对这两个状态一直不是很理解,都是一直处于迷茫中,今天我就用实际的例子来教给你,对于arm状态和thumb状态的学习。

我们首先先来清楚一下:arm处理器的工作状态分为3种,一是:ARM状态,二是:Thumb状态及Thumb-2状态,三是:调试状态

对于arm状态和Thumb状态我们可以用一个简单的比喻来先了解一下:我们可以把ARM核比作一个高中学校,那种包含普通高中和职业高中的。普通高中就相当于ARM状态,职业高中就相当于Thumb状态,这样还不能理解的话:可以认为 泡泡卡丁车 中普通模式和加速模式,,卡丁车加速要等到集气管加满,然后“ctrl”一下,就切换到了加速模式,气放完了就又回来了,不管加速模式还是普通模式都是在跑,只是速度不一样而已。

而ARM状态和Thumb状态也是可以直接通过某些指令直接切换,都是在运行程序,只不过指令长度不一样而已。这个概念对初学者相当重要,因为当ARM Thumb是什么还没弄清楚,怎么能理解两种状态呢?通过上面的例子,我想大家都大概了解了ARM状态和Thumb状态的一些关系了吧,那么这样就可以深入了解ARM状态是什么,Thumb状态是什么了。

另外:ARM的M系列主要用Thumb指令,ARM9和A系列主要用ARM指令

S3C2440.S启动代码中根本就没用Thumb指令。

ARM状态此时处理器执行32位的字对齐的ARM指令,Thumb状态此时处理器执行16位的,半字对齐的THUMB指令。 切换程序:从ARM到Thumb: LDR R0,=lable+1 BX R0 从ARM到Thumb: LDR R0,=lable BX R0

1,ARM状态

arm处理器工作于32位指令的状态,所有指令均为32位

2,thumb状态

arm执行16位指令的状态,即16位状态

3,接下来就是arm与thumb间的切换了,他们到底是如何切换的,这些是你需要掌握的

(1)由thumb状态切换到ARM状态

寄存器最低位设置为0

BX指令:R0[0]=0,则执行BX

R0指令将进入arm状态

当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。

(2)由arm状态切换到thumb

状态将寄存器的最低位设置为1

BX指令:R0[0]=1,则执行BX

R0指令将进入thumb状态

注意: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位的,你只要把他们之间的这些东西都掌握好,那对你学习arm状态和thumb状态是很容易的,快快学起来吧!

上一篇:学ARM嵌入式开发轻轻松松入门

下一篇:嵌入式之arm汇编指令集合,美女学霸总结

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部