本学期开始学习ARM嵌入式,为了便于自己学习以及后续的复习,就在这里做些笔记吧
第一次写文章,因为自己知识水平实在有限,写出来如果有错误还请大佬们多多指点和谅解。
寄存器组织
ARM Cortex_A8处理器有40个32位长的寄存器, 32个通用寄存器,(程序计数器也可以归入此类) 7个状态寄存器, 1个pc(程序计数器) 因为ARM Corte-A8具有8种处理器模式:(拿我们老师的PPT用用哈哈) 在每一种处理模式中都有一组相应的寄存器,具体看下图: 40个寄存器是怎么来的呢? 上面的图中,背景为橙色的表示该寄存器在其他7个处理模式中都相同(除开Mon模式下的SPSR),也就是这个寄存器是通用的。 数一数橙色的有几个:16+1=17 (CPSR为8种模式共有) 在看到FIQ模式:私有寄存器:R8-R14,SPSR,,共8个 IRQ模式一直到Mon模式:(2+1)x5=15个 17+8+15=40个
未分组寄存器:所有处理模式下对于每一个未分组寄存器都使用同一个物理寄存器。(在模式切换下,易造成数据破坏)
分组寄存器:每一个访问的物理寄存器都取决于当前处理器模式。
具体分类如下图: (图片来源) 在任何模式下,都可以存取下列寄存器: R0-R12 R13(栈指向 R14(链路寄存器 R15(PC,程序计数器 以及除了user,sys模式下的SPSR
程序状态寄存器
N:运算结果为正或者0:N=0;运算结果为负:N=1
Z:运算结果为0:Z=1;否则为1
C: (1):加法指令中(含CMN):产生进位,C=1 (2):减法指令中(含CMP):产生错位,C=0 (3):对于包含移位的指令:C被设置为被最后移出去的位。
V: 对于加减法指令:符号位溢出:V=1
**控制位**
就先记到这吧。
|