前言
- 这篇文章主要介绍:
- ARM和X86架构的发展历程
- 列举常见的汇编指令
- 提问:为什么采用满递减堆栈?
- 推荐课程:C语言嵌入式Linux高级编程第2期:计算机体系架构与ARM汇编语言设计视频课程
2.1 计算机体系结构
- 计算机模型:图灵机(有兴趣可以观看模仿游戏,致敬图灵)
- 冯·诺依曼与哈弗架构
- 嵌入式最小系统概念
计算机模型:图灵机
冯·诺依曼与哈弗架构
嵌入式最小系统概念
2.2 X86与ARM架构对比分析
- X86架构演变过程
- ARM架构演变过程
- 对比分析及小结
X86架构演变过程
1.早期计算机时代
2.总线隔离
3.486时代
4.现代计算机
总线升级、cpu频率上升
ARM架构演变过程
AMBA2.0总线
AMBA3.0总线
对比分析及小结
- 总线作用:为了频率同步、提升性能
– 低速设备通过控制器连接总线、CPU通过倍频与总线通信工作
– RAM、显卡高频率、大数据量模块挂高性能主线上
– 串口、打印机、12C等低速设备挂低速总线上 - X86总线在CPU外
- ARM总线在S0C内部
2.3 C51与ARM架构对比分析
C51与ARM对比分析
类似的地方
- 计算机基本架构及基本概念:复位、中断
- 程序原理和运行过程:程序的编辑、编译、链接、调试
- 指令的取指、译码、和执行过程
- 中断的处理过程:响应中断、保护现场和中断退出
ARM和51单片机的区别就是:单片机需要直接操作寄存器,而ARM需要通过配置寄存器来实现
2.4 总线与地址
x86内存和外设独立编址,不占用CPU寻址空间
2.5 指令集、微架构与编译器
指令集的基本概念
指令集就是架构
微架构
编译器
2.6 ARM体系架构及指令
infocenter.arm.com可以下载指令集——芯片用户手册——wiki博客
计算机行业、IC行业、电子行业英语词汇
ARM体系结构
ARM工作模式
寄存器
ARM寻址方式
注意:逻辑移位与算数移位有区别!
ARM栈类型是满递减堆栈
思考
- ARM采用 满递减堆栈
- X86使用满递减堆栈
- 为什么要使用这种类型的堆栈?
满堆栈就是从两头开始存储,malloc主动申请的从堆这边存,系统分配的从栈那边开始存储
2.7 ARM汇编指令
指令基本格式
存储器访问指令
数据传送指令
算术逻辑运算指令
跳转指令
2.8 伪指令
- 因为操作码也会占用寄存器位数,剩下存储的位置只有
imm8
这一部分8bit了,因此,超过255就不能表示了,需要用到伪指令。
- 使用到相对寻址的有uboot启动、编译链接库的时候。
2.9 ARM汇编程序设计
2.10 C和汇编混合编程
ATPCS规则
C语言內嵌汇编
汇编中调用C程序
2.11 GNU ARM汇编语言
2.12 链接脚本
2.13 嵌入式系统启动流程
后记
- 暂且到此,详细内容建议观看课程!