Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359407
  • 博文数量: 66
  • 博客积分: 3201
  • 博客等级: 中校
  • 技术积分: 695
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-04 11:17
文章分类

全部博文(66)

文章存档

2016年(1)

2014年(1)

2012年(1)

2011年(2)

2010年(18)

2009年(42)

2008年(1)

分类: LINUX

2009-06-21 10:57:11



1.load/store CPU从存储器load数据/指令到寄存器,再处理,没有直接处理在存储器中数据的指令;
2.The sign extend hardware:例如根据符号扩展到32位,一般前面:负数补1,正数补0;
3.load/store指令集用ALU产生地址,然后放到地址寄存器中,然后放到地址总线;

===




1.16个数据寄存器r0-r15: r0-13是orthogonal—any的,就是其中一个能胜任的,其他的也可以充当,
但r14, r15比较特殊,一个叫link register,保存函数调用返回地址,用它是不明智的,另一个是pc,
即program counter,不用说了;

2.2个程序状态寄存器:cpsr, spsr (current/saved program status register);

3.7种模式(abort, fast interrupt request, interrupt request, supervisor, system, and undefined),除了用户模式外,其余均为特权模式,可以修改cpsr的模式位切换当前模式。除用户/系统模式外,其余均为异常模式,都有自己的spsr。


4.特权模式可以full读写cpsr,非特权模式只读(但可以读写condition flags), 系统模式是一个特殊的用户模式,它允许对cpsr的full读写权限。

5.spsr只存在异常模式下,在用户/系统模式下没有spsr.

===




每个处理器模式(除了用户模式)可以通过直接写cpsr的mode bits来改变模式。除了系统模式,其余都有那16个寄存器的子集组成,一个banked(分组的)寄存器一对一地maps到一个用户模式的寄存器。如果你更改了模式,新模式的banked寄存器将替代那16个中的一个,被替代指:只是在当前模式用新的寄存器,而其余模式或者说被替代的模式不受影响,如上图。

举个例子,当处理器处于中断请求模式,你执行的指令中仍然有访问r13和r14的,其实就是指r13_irq,r14_irq了。而且用户模式的r13_usr, r14_usr不受影响,其他寄存器r0-r12应该是一致的。
注意:当通过直接写cpsr强制切换一个模式时,cpsr不会被拷贝到spsr,保存cpsr只出现在一个异常或者一个中断发生时。

===


arm状态和thumb状态

===
cpsr


===
中断(即使中断发生,但在执行中的指令不会停掉,会执行完)
阅读(627) | 评论(0) | 转发(0) |
0

上一篇:y86源码编译通过

下一篇:内存技术指南

给主人留下些什么吧!~~