在“ARM11TechnicalRefManual”第 1-34 节的“Thumb 指令集”下,它说:
“Thumb指令集是最常用的32位ARM指令的子集。Thumb指令有16位长,并且有相应的32位ARM指令,对处理器模型具有相同的效果。”
任何人都可以解释一下这尤其是第二句话并说明处理器如何执行它吗?
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”(它将被汇编器忽略)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)