赞
踩
ARM采用的是32位架构,ARM的基本数据类型有以下3种。
Byte:
·字节,8bit.
Halfword:
·半字,16bit(半字必须与2字节边界对齐)。
Word:
·字,32bit(字必须与4字节边界对齐)。
·存储器可以看做是序号为0~2432-1的线性字节阵列。每一个字节都有唯一的地址。
模式 | 简介 | 说明 |
User(用户) | 非特权模式,大部分任务执行在这种模式 MOV R0,#0x1 MSR CPSR,R0 | 用户程序运行模式 |
FIQ(快速中断) | 当一个高优先级(fast) 中断产生时将会进入这种模式 | 快速中断模式 |
IRQ(一般中断) | 当一个低优先级(normal) 中断产生时将会进入这种模式 | 普通中断模式 |
Supervisor(管理模式) | 当复位或软中断指令执行时将会进入这种模式 MOV R0,#0x10001 MSR CPSR,R0 | 提供操作系统使用的一种保护模式,swi命令状态 |
Abort(中止) | 当存取异常时将会进入这种模式 | 虚拟内存管理和内存数据访问保护 |
Undef(未定义指令中止 | 当执行未定义指令时会进入这种模式 | 支持通过软件仿真硬件的协处理 |
System(系统) | 使用和User模式相同寄存器集的特权模式 | 运行特权级的操作系统任务 |
Cortex-A特有模式: Monitor : 是为了安全而扩展出的用于执行安全监控代码的模式; 也是一种特权模式
非特权模式只有user模式,其他的都是特权模式
地址偏移量 | 异常源 | 异常模式 | 描述 |
0x00000000 | Reset(复位) | SVC | 上电时执行 |
0x00000004 | Undef(未定义指令) | Undefined | 当流水线中的某个非法指令到达执行状态时执行 |
0x00000008 | swI(软件中断) | SVC | 当一个软中断指令被执行完的时候执行 |
0x0000000c | Prefetch(预取值异常) | Abort中止模式 | 当一个指令被从内存中预取时,由于某种原因而失败,如果它能到达执行状态这个异常才会产生 |
0x00000010 | Data(数据异常) | Abort中止模式 | 如果一个预取指令试图存取一个非法的内存单元,这时异常产生 |
0x00000014 | - | 未使用 | 未使用 |
0x00000018 | IRQ | IRQ | 通常的中断 |
0x0000001c | FIQ | FIQ | 快速中断 |
多个异常可以在同一时间产生
异常指定了优先级和固定的服务顺序:
Reset
Data Abort
FIQ
IRQ
Prefetch Abort
swI
Undefined instruction
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。