在/usr/include/asm/ptrace.h 中看到以下代码[code] struct pt_regs { long uregs[18]; }; #define arm_cpsr uregs[16] #define arm_pc uregs[15] #define arm_lr uregs[14] #define arm_sp uregs[13] #define arm_ip uregs[12] #define arm_fp uregs[11] #define arm_r10 uregs[10] #define arm_r9 uregs[9] #define arm_r8 uregs[8] #define arm_r7 uregs[7] #define arm_r6 uregs[6] #define arm_r5 uregs[5] #define arm_r4 ...
by waiting000 - CPU与编译器 - 2012-01-07 01:14:04 阅读(2330) 回复(1)
(arm9有37个寄存器,arm7有27个,好像是这样的)
37个寄存器=
7个未分组寄存器(R0~R7)+ 2×(5个分组寄存器R8~R12)
+6×2(R13=SP,R14=lr 分组寄存器) + 1(R15=PC) +1(CPSR) + 5(SPSR)
用途和访问权限:
R0~R7:USR(用户模式)、fiq(快速中断模式)、irq(中断模式)、svc(超级用法模式)、abt、und
R8~R12:R8_usr~R12_usr(usr,irq,svc,abt,und)
R8_fiq~R12_fiq(fiq)...
arm处理器模式
用户模式(User):arm处理器正常的程序执行状态
快速中断模式(FIQ):用于高速数据传输或通道处理
外部中断模式(IRQ):用于通用的中断处理
管理模式(Supervisor):操作系统使用的保护模式
数据访问终止模式(Abort):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护
系统模式(System):运行具有特权的操作系统任务
未定义指令中止模式(Undifined):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿...
学习arm一段时间了,一直没有机会好好总结一下,现在放假了终于有机会理一理思路,总结一下,便于复习记忆。
arm 基础
一、arm寄存器 无论是学习哪一种处理器,首先需要明确的就是这种处理器的寄存器以及工作模式。 arm有37个寄存器,其中31个通用寄存器,6个状态寄存器。1、不分组寄存器(R0-R7) 不分组也就是说说,在所有的处理器模式下指的都时同一物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式...
arm微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。
1.arm 状态下的寄存器组织
通用寄存器:
通用寄存器包括R0~R15,可以分为三类:
─ 未分组寄存器R0~R7;
─ 分组寄存器R8~R14
─ 程序计数器PC(R15)
...
本帖最后由 xiaojsj 于 2013-11-09 14:57 编辑
各位大牛帮忙来解析下:
在进入中断时,arm的cpsr寄存器会保存到相应异常模式的cpsr私有备份寄存器中,
而在进程切换的时候,cpsr寄存器却不需要保存,这是原因呢?
保存cpsr寄存器的标准是什么呢?
叩谢!·