ARM 架构

数据和指令类型

  • ARM 采用的是32位架构.
    Byte : 8 bits
    Halfword :16 bits (2 byte)
    Word : 32 bits (4 byte)

  • 大部分ARM core 提供:
    ARM 指令集(32-bit)
    Thumb 指令集(T变种)(16-bit )

  • Jazelle cores 支持 Java bytecode(J变种,4TEJ)

处理器工作模式

ARM 有7个基本工作模式:

  • User:非特权模式,大部分任务执行在这种模式
    正常程序执行的模式
  • FIQ:当一个高优先级(fast)中断产生时将会进入这种模式
    (FAST INTERRUPT RQUEST)高速数据传输和通道处理
  • IRQ:当一个低优先级(normal)中断产生时将会进入这种模式
    通常的中断处理
  • Supervisor:当复位或软中断指令执行时将会进入这种模式
    供操作系统使用的一种保护模式
  • Abort: 当存取异常时将会进入这种模式
    虚拟存储及存储保护
  • Undef: 当执行未定义指令时会进入这种模式
    软件仿真硬件协处理器
  • System: 使用和User模式相同寄存器集的特权模式
    特权级的操作系统任务

寄存器

  • CPSR 程序状态寄存器

  • SPSR(saved program status register)

                    用于保存CPSR(current program status register)的值,以便异常返回后恢复异常发生时的工作状态。

  • r13 (the stack pointer, sp)

  • r14 (the link register, lr)

  • r15 ( the program counter, pc) 程序指针

    1. 当处理器执行在ARM状态:
      所有指令 32 bits 宽
      所有指令必须 word 对齐(能被4整除)
      所以 pc值由bits [31:2]决定, bits [1:0] 未定义 (所以指令不能halfword / byte对齐).

    2. 当处理器执行在Thumb状态:
      所有指令 16 bits 宽
      所有指令必须 halfword 对齐(能被2整除)
      所以 pc值由bits [31:1]决定, bits [0] 未定义 (所以指令不能 byte对齐).

    3. 当处理器执行在Jazelle状态:
      所有指令 8 bits 宽
      处理器执行 word 存取一次取4条指令

    4. PC(R15)的值等于当前正在执行的指令地址+8.

异常处理


字节顺序

  • 大端:位地址存储数据的字节,位地址存储数据的字节
  • 小端:位地址存储数据的字节,位地址存储数据的字节

 

  • 如何判断系统是大端还是小端?

bool IsBigEndian()
{
    int value = 0x1234;
    char lowaddress = *(char*)&value;
    if(lowaddress == 0x12)
    {
            return true;
    }
    return false;
}
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值