EDA365电子论坛网
标题:
ARM核的三种工作状态
[打印本页]
作者:
zxshunine
时间:
2020-6-24 10:41
标题:
ARM核的三种工作状态
ARM的体系结构中,可以工作在三种不同的状态:
! B# t: o" f C; ^
一是ARM状态
ARM:arm处理器工作于32位指令的状态,所有指令均为32位。
3 l& N$ p; W/ S6 a8 U6 C' W: p" J1 j$ B
二是Thumb状态及Thumb-2状态
, O& V0 O* T& o+ h7 |$ k% @. H
Thumb: arm执行16位指令的状态,即16位状态。
5 M8 h1 {9 c( D5 `) r l
Thumb-2: 这个状态是ARM7版本的ARM处理器所具有的新的状态,新的thumb-2内核技术兼有16位及32位指令,实现了更高的性能,更有效的功耗及更少地占用内存。总的来说,感觉这个状态除了兼有arm和thumb的优点外,还在这两种状态上有所提升、优化。
6 E# _( o7 q$ _, P8 ]# _
三是调试状态
处理器停机时进入调试状态。
$ e+ R' D* i$ K6 q
# s0 C e6 s: ]1 u2 p7 a# k
(以下 lable 可以理解为一个函数名、或者一个跳转标志位——地址)由arm状态切换到thumb
5 A' S3 e, H7 h D2 B0 J3 \
状态将寄存器的最低位设置为1
8 \/ P5 f! f+ T9 S: z
BX指令:R0[0]=1,则执行BX
' }# ` c' m* A* ~: K' E
R0指令将进入thumb状态 LDR R0,=lable+1 BX R0由thumb状态切换到ARM状态
' @: H& V# t! g* F
寄存器最低位设置为0
( ~8 |; p9 Z# O4 O
BX指令:R0[0]=0,则执行BX
4 B! T2 `$ q) p: C! }0 X0 I7 d6 v
R0指令将进入arm状态LDR R0,=lable BX R0
! J- n" m$ M+ v
4 K6 I3 D; u) P9 @2 S
无论是ARM还是Thumb,其指令在存储器中都是边界对齐的(2字节或者4字节对齐,最低位不起作用!)。因此,在执行跳转过程中,PC寄存器中的最低位被舍弃,不起作用。在BX指令的执行过程中,最低位正好被用作状态判断的标志,不会造成存储器访问不对齐的错误。
4 T# O [+ U; w3 Z0 @ [) O
当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。
" \* _( M9 z1 P, Z& f
注意:ARM处理器复位后开始执行代码时总是只处于ARM状态;
' _# U U5 Q) v5 _) J
Cortex-M3只有Thumb-2状态和调试状
9 V1 a: p" {. P
由于Thumb-2具有16位/32位指令功能,因此有了thumb-2就无需Thumb了。
0 G* c. B0 W n3 V2 q8 [ j" P
另外,具有Thumb-2技术的ARM处理器也无需再ARM状态和Thumb-2状态间进行切换了,因为thumb-2具有32位指令功能。
; Q3 s. w9 F' J9 c) r9 L+ E7 u; h
总的说,arm状态与Thumb状态的本质区别就是指令的位数不同,arm是32位的指令状态,而thumb是16位 的指令状态,而thumb-2状态是arm状态和thumb状态的结合和优化。
2 f$ e* M8 P% m$ W
/ ?5 W, C9 [8 o- ^" Q2 o
, c/ E* R* R0 q ]4 h1 J
" t; v/ C) M$ R, b
作者:
shapeofyou888
时间:
2020-6-24 11:27
ARM状态、Thumb状态及Thumb-2状态、调试状态
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2