在“ARM11TechnicalRefManual”第1-34节“拇指指令集”下,它说:
“Thumb指令集是最常用的32位ARM指令的子集.Thumb指令长16位,并且具有相应的32位ARM指令,对处理器型号具有相同的影响。”
任何人都可以解释更多关于这个特别是第二句话,并说出处理器如何执行它?
答案 0 :(得分:43)
ARM处理器有2个指令集,传统的ARM集合,其中指令都是32位长,而更集中的Thumb集合,其中大多数常见指令是16位长(有些是32位长) )。开发人员可以选择运行哪个指令集,并且只有一个集可以处于活动状态(即,一旦处理器切换到Thumb模式,所有指令将被解码为使用Thumb而不是ARM)。
虽然它们是不同的指令集,但它们共享相似的功能,并且可以使用相同的汇编语言表示。例如,指令
ADDS R0, R1, R2
可以编译为ARM(E0910002 / 11100000 10010001 00000000 00000010)或Thumb(1888/00011000 10001000)。当然,它们执行相同的功能(添加r1和r2并将结果存储到r0),即使它们具有不同的编码。这是 Thumb指令长度为16位的含义,并且具有相应的32位ARM指令,对处理器型号具有相同的效果。
Thumb编码中的每个*指令在ARM中也有相应的编码,这是“子集”句子的意思。
*:并非严格来说,ARM中没有“IT”指令,尽管ARM无论如何都不需要“IT”(汇编器会忽略它)。