ARM 体系结构

一、数据存储格式

1、半字:从偶数地址开始的连续2个字节构成一个半字;

      字:以能被4整除的地址开始的连续4个字节构成一个字;

      ARM指令的长度刚好是一个字,Thumb指令的长度刚好是一个半字。

2、存储器格式

        

 

3、大小端存储

      (1)、小端存储器系统:在小端格式中,数据的高字节存放在高地址中。如下图,小端存储模式下,0x12345678在A地址开始的一个字空间的存储;
         
      (2)、大端存储器系统:在大端格式中,数据的高字节存放在低地址中。如下图,大端存储模式下,0x12345678在A地址开始的一个字空间的存储;
                 

 

二、处理器状态

     ARM920T处理器内核包含2套指令系统,分别为ARM 指令集和Thumb 指令,并且各自对应1种处理器的状态;    

     (1)、ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;

     (2)、Thumb状态:16位,处理器执行半字方式的Thumb指令。

     注意:两个状态之间的切换并不影响处理器模式或寄存器内容。

 

三、处理器模式

       ARM 有7个基本工作模式,可以更好的支持操作系统并提高工作效率。

       (1)、用户模式(usr):正常程序执行的模式,大部分任务执行在这种模式

       (2)、快速中断模式(fiq):高速数据传输或通道处理当一个高优先级(fast)中断产生时将会进入这种模式。

       (3)、外部中断模式(irq):通常的中断处理当一个低优先级(normal)中断产生时将会进入这种模式。

       (4)、管理模式(svc):供操作系统使用的一种保护模式当复位或软中断指令执行时将会进入这种模式。    

       (5)、中止模式(abt):虚拟存储及存储保护当存取异常时将会进入这种模式。

       (6)、未定义模式(und):软件仿真硬件协处理器当执行未定义指令时会进入这种模式。

       (7)、系统模式(sys):特权级的操作系统任务

       

 

四、内部寄存器

1、寄存器

       在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器6个状态寄存器。ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。
        
 
      寄存器R0~R7为未分组的通用寄存器,它们在任何处理器模式都对应于相同的32位物理寄存器。

      寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。在发生FIQ中断后,处理器不必为保护寄存器而浪费时间,从而加速了FIQ的处理速度。

      寄存器R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容。

      寄存器R14称为链接寄存器(LR),在结构上有两个特殊功能:(1)当使用BL指令调用子程序时,返回地址将自动存入R14中;(2)当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。

      寄存器R13、R14分别有6个分组的物理寄存器。1个用于用户和系统模式,其余5个分别用于5种异常模式。

      寄存器R15称为程序计数器(PC),它指向正在取指的指令。

      寄存器CPSR为当前程序状态寄存器,在异常模式中,另外一个寄存器程序状态保存寄存器(SPSR)可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。

2、状态寄存器

      格式如下:

            

(1)、中断禁止控制位I和F

        当控制位I置位时,IRQ中断被禁止;
        当控制位F置位时,FIQ中断被禁止。
(2)、处理器状态T
        当控制位T置位时,处理器正在Thumb状态下运行;
        当控制位T清零时,处理器正在ARM状态下运行。
        警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。
(3)、处理器模式位M0-M4
       
 
(4)、条件代码标志
      N  运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;
      Z  指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;
      C  当进行加法运算(包括CMN指令),并且最高位产生进位时C=1;否则C=0。当进行减法运算(包括CMP 指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;
      V  当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。
 

五、异常介绍

1、ARM 有7种异常

         

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值