国家车联网标准建设指南:嵌入式系统与Thumb-2指令详解
需积分: 9 13 浏览量
更新于2024-08-06
收藏 18.38MB PDF 举报
"嵌入式系统概述,Thumb-2指令集,LPC178x/177x微控制器"
嵌入式系统是现代科技中不可或缺的一部分,它们被广泛应用于日常生活和工业生产中,从智能家居设备到复杂的工业自动化系统。嵌入式系统具有专用性、实时性和低功耗等特点,其未来发展趋势包括更强大的处理能力、更高的能效比以及更加智能化。
嵌入式处理器是嵌入式系统的核心,通常分为CISC(复杂指令集计算机)和RISC(精简指令集计算机)两类。其中,ARM处理器因其高效节能的特性,在嵌入式领域占据了主导地位。LPC178x/177x系列微控制器是基于ARM Cortex-M3内核的,支持Thumb-2指令集,这是一种高效的32位指令集,同时兼容16位的Thumb指令,以实现更好的代码密度和执行效率。
Thumb-2指令集是ARM指令集的一个扩展,它增加了更多的16位和32位指令,使得在保持小代码尺寸的同时,性能得到提升。关于Thumb-2指令集的几个关键知识点:
1. Thumb-2指令、Thumb指令和ARM指令的关系:Thumb-2指令集是在原有的16位Thumb指令基础上扩展的,包含了部分32位指令,而ARM指令集是完整的32位指令集。Thumb-2可以看作是Thumb指令集的增强版,与ARM指令集兼容,但不是全部包含。
2. Thumb-2指令的寻址方式:Thumb-2指令集支持多种寻址方式,例如立即寻址、寄存器间接寻址、相对寻址等。LDR R1,[R0,#0X06]是寄存器加立即数寻址方式。
3. Thumb-2指令的条件码:共有16个条件码,如EQ(相等)、NE(不相等)等。默认条件码是AL(总是)。
4. Thumb-2指令的第二个操作数形式:可以是寄存器、立即数、寄存器加立即数或寄存器加寄存器。
5. LDR/STR指令的偏移形式:包括立即数偏移、寄存器偏移、预增偏移和后增偏移。LDRB和LDRSB分别是加载字节和带符号扩展加载字节,区别在于LDRSB会将加载的数据进行符号扩展。
6. MOV与LDR指令的区别:MOV用于直接在寄存器之间移动数据,而LDR从内存中加载数据到寄存器。
7. CMP指令:比较两个操作数,根据比较结果更新处理器状态标志位N、Z、V和C。
8. 子程序调用:调用子程序一般使用BL指令,因为它会保存返回地址到LR寄存器;返回子程序的指令通常是BX LR。
9. LDR伪指令:用于加载内存中的数据到寄存器,与LDR加载指令的区别在于LDR伪指令通常用于初始化全局变量或常量。
10. Thumb-2的堆栈操作指令:PUSH和POP,分别用于将寄存器压入堆栈和从堆栈弹出到寄存器。
11. Thumb-2位段指令:包括BIT、BIC、ORR、EOR、AND等,用于对寄存器中的位进行操作。
在进行有符号和无符号加法时,了解N(负)、Z(零)、V(溢出)和C(进位)标志位的计算规则非常重要。通过实际计算和修改程序清单,可以验证这些标志位的设置情况,从而加深对处理器运算逻辑的理解。
2018-12-25 上传
2021-09-14 上传
2021-10-22 上传
2019-04-28 上传
2023-06-05 上传
Matthew_牛
- 粉丝: 41
- 资源: 3792
最新资源
- Qt通过QWebChannel和html交互源代码
- 六自由度机器人D-H法正逆运动学分析matlab代码
- DHTesp:使用Arduino框架为ESP32ESP8266优化的DHT库
- Flow
- BuzzBoard:开源BuzzBoard
- CS48002-Network-Science
- krad:了解极化雷达数据
- ThinkPHP内核简单员工管理系统源码
- javaDemo
- erhuo:二活字型设计语言
- Project_DSBC
- 2021-los-pepardos:los-pepardos组存储库
- pypicdownloader:轻松下载图片,用 Python 制作
- Coursera_Capstone
- thinkphp互助系统源码,三级分红,红利返点,自带5套UI风格
- nextjs-blog