首页 理论教育 ARM指令集与嵌入式C编程的比较

ARM指令集与嵌入式C编程的比较

时间:2023-10-19 理论教育 版权反馈
【摘要】:Thumb指令集是针对代码密度的问题而提出的,可以看作ARM指令集的子集。一般Thumb代码只需支持通用功能,必要时可以借助ARM指令集。完成相同的操作,Thumb指令集通常需要更多的指令,因此在对系统运行时间要求苛刻的应用场合ARM指令集更为适合。显然,ARM指令集和Thumb指令集各有其优点,若对系统的性能有较高要求,应使用32位的存储系统和ARM指令集;若对系统的成本及功耗有较高要求,则应使用16位的存储系统和Thumb指令集。

ARM指令集与嵌入式C编程的比较

Thumb指令集是针对代码密度的问题而提出的,可以看作ARM指令集的子集。Thumb是一个不完整的体系结构,不能指望ARM处理器只执行Thumb代码而不支持ARM指令集。一般Thumb代码只需支持通用功能,必要时可以借助ARM指令集。

(1)与ARM指令集相比较,Thumb指令集中的数据处理指令的操作数仍然是32位,指令地址也为32位,但Thumb指令集为了实现16位的指令长度,舍弃了ARM指令集的一些特性,Thumb指令采用16位二进制编码,而ARM指令是32位的。Thumb指令也采用Load/Store结构,有数据处理、数据传送及流控制指令等。

(2)大多数Thumb指令是无条件执行的(除了跳转指令B),而大多数ARM指令都是条件执行的。

(3)许多Thumb数据处理指令采用2地址格式,即目的寄存器与一个源寄存器相同,而且指令的第2个操作数受到限制。而大多数ARM数据处理指令采用的是3地址格式(除了64位乘法指令外)。

(4)Thumb指令集没有协处理器指令、信号量(Semaphore)指令、乘加指令、64位乘法指令以及访问CPSR或SPSR的指令,而且指令的第2个操作数受到限制。

(5)完成相同的操作,Thumb指令集通常需要更多的指令,因此在对系统运行时间要求苛刻的应用场合ARM指令集更为适合。

(6)Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要和ARM指令配合使用。

(7)由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。(www.xing528.com)

(8)一般情况下,Thumb指令与ARM指令的时间效率和空间效率关系为:

①Thumb代码所需的存储空间约为ARM代码的60%~70%;

②Thumb代码使用的指令数比ARM代码多30%~40%;

③若使用32位数据宽度的存储器,ARM代码比Thumb代码快约40%;

④若使用16位数据宽度的存储器,Thumb代码比ARM代码快40%~50%;

⑤与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%。

显然,ARM指令集和Thumb指令集各有其优点,若对系统的性能有较高要求,应使用32位的存储系统和ARM指令集;若对系统的成本及功耗有较高要求,则应使用16位的存储系统和Thumb指令集。当然,若两者结合使用,充分发挥各自的优点,会取得更好的效果。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈