爱问ARM中文指令寄存器和处理器模式Word文档格式.docx
- 文档编号:15940415
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:14
- 大小:30.01KB
爱问ARM中文指令寄存器和处理器模式Word文档格式.docx
《爱问ARM中文指令寄存器和处理器模式Word文档格式.docx》由会员分享,可在线阅读,更多相关《爱问ARM中文指令寄存器和处理器模式Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
SVC模式
IRQ模式
FIQ模式
APCS
R0-------R0-------R0-------R0
a1
R1-------R1-------R1-------R1
a2
R2-------R2-------R2-------R2
a3
R3-------R3-------R3-------R3
a4
R4-------R4-------R4-------R4
v1
R5-------R5-------R5-------R5
v2
R6-------R6-------R6-------R6
v3
R7-------R7-------R7-------R7
v4
R8-------R8-------R8
R8_fiq
v5
R9-------R9-------R9
R9_fiq
v6
R10------R10------R10
R10_fiq
sl
R11------R11------R11
R11_fiq
fp
R12------R12------R12
R12_fiq
ip
R13
R13_svc
R13_irq
R13_fiq
sp
R14
R14_svc
R14_irq
R14_fiq
lr
-------------R15/PC-------------
pc
最右侧的列是APCS代码使用的名字,关于APCS的详情参见这里。
程序计数器构造如下:
位
31
30
29
28
27
26
25------------2
1
0
N
Z
C
V
I
F
程序计数器
S1S0
对R15的详细解释,请参见psr.html。
下面是你想知道的"
模式"
,比如上面提及的"
FIQ"
模式。
用户模式,运行应用程序的普通模式。
限制你的内存访问并且你不能直接读取硬件设备。
超级用户模式(SVC模式),主要用于SWI(软件中断)和OS(操作系统)。
这个模式有额外的特权,允许你进一步控制计算机。
例如,你必须进入超级用户模式来读取一个插件(podule)。
这不能在用户模式下完成。
中断模式(IRQ模式),用来处理发起中断的外设。
这个模式也是有特权的。
导致IRQ的设备有键盘、VSync(在发生屏幕刷新的时候)、IOC定时器、串行口、硬盘、软盘、等等...
快速中断模式(FIQ模式),用来处理发起快速中断的外设。
这个模式是有特权的。
导致FIQ的设备有处理数据的软盘,串行端口(比如在82C71x机器上的A5000)和Econet。
IRQ和FIQ之间的区别是对于FIQ你必须尽快处理你事情并离开这个模式。
IRQ可以被FIQ所中断但IRQ不能中断FIQ。
为了使FIQ更快,所以有更多的影子寄存器。
FIQ不能调用SWI。
FIQ还必须禁用中断。
如果一个FIQ例程必须重新启用中断,则它太慢了并应该是IRQ而不是FIQ。
Phew!
关于如果变更处理器的模式的详情请参照psr.html。
ARM中文指令--32位操作
这里的许多信息取自ARM汇编器手册。
我现在没有32位处理器,就只能信任文档了...这个文档中表述的UMUL和UMLA只能在32bit模式下进行是错误的。
如果你的处理器(比如:
StrongARM)可以这么做,则它可以在32bit或26bit下工作...
ARM2和ARM3有一个32位数据总线和一个26位地址总线。
在以后版本的ARM上,数据总线和地址总二者都是完全的32位宽。
这解释了为什么一个“32位处理器”被称为26位。
数据宽度和指令/字大小是32位,并总是这样,但地址总线只是24位。
因为PC总是字对齐的,一个地址中的低两位总是零,所以在ARM2/ARM3处理器上这些位持有处理器模式设置。
尽管实际上只使用了24位,PC的有效宽度仍是26位。
在老机器上这没有问题。
4Mb内存是基准的。
一些人升级到8Mb、和16Mb是理论上的限制。
(Somepeopleupgradedto8Mb,and16Mbwasthetheoreticallimit.)但是RiscPC使用一个26位程序计数器是不可能的,因为RiscPC允许安装258Mb内存,而26位只允许你寻址到%11111111111111111111111100(或67108860字节,或64Mb)。
这附带的解释了对应用任务的28Mb大小限制;
就是希望系统与老的RISCOSAPI相容。
尽管这个汇编器站点的某些部分覆盖了32位模式(比如运行在SVC32下的一个简要的例子!
),但多数部分是关于26位模式操作的,这是为了与RISCOS的当前可获得的版本相兼容(就是RISCOS2到RISCOS4);
我注意到部分例子不适用于32位。
RiscPC、Mico、RiscStation、A7000等都有能力运行完全的32位操作系统;
实际上ARMLinux就是这样的一个操作系统。
RISCOS不是,因为RISCOS需要,至少一个时期,保持与现存版本的兼容。
这是个古老的两分问题(dichotomy),有一个崭新的完全32位版本的RISCOS版本是美妙的,但当你发现许多你的现存软件不能继续运行(somuchasload)就不那么美妙了!
RISCOS不是完全的26位。
一些处理程序(handler)需要工作在32位模式下;
限制它的是金钱(就是说,谁为完全转换RISCOS付钱;
谁为用来重建它们的代码的开发工具付钱(PD在RISCOS上是强壮的))和必要性(就是说,很多人使用Impression而CC不再与我们同在;
Impression好象不能在更新的RISCOS上工作,所以如果人们需要的软件将不能工作,那么他们不会认为有升级的必要)。
为什么这如此重要?
新的ARM处理器将不支持26位操作。
尽管做了一些融合(ARM6、ARM7、StrongARM),但气数就要尽了。
你可以增加一个26/32位系统的复杂性,或者只用32位而得到更简单、更小的处理器。
我们要么随波逐流,要么被甩下...所以我们别无选择。
32位体系
ARM体系在ARM6系列中进行了重大变更。
下面我将描述26位和32位操作行为的不同之处。
在ARM6中,程序计数器被扩展到完整的32位。
结果是:
PSR从PC中分离到自己的寄存器CPSR(当前的程序状态寄存器)中。
在改变处理器模式的时候,不再与PC一起保存PSR;
现在是每个有特权的模式都有一个额外的寄存器-SPSR(保存的程序状态寄存器)-用来持有前面模式的PSR。
增加了使用这些新寄存器的指令。
除了允许PC使用完全的32位之外,还有进一步的变更,就是给PSR增加了额外的有特权的模式。
这些模式用于处理未定义指令和异常终止例外:
未定义指令、异常终止、和超级用户不再共享同一个模式。
去掉了在早期ARM上存在的对超级用户的那些限制。
在ARM6系列(和以后的其他兼容芯片)中通过设置片上某个控制寄存器来确定这些特征的可获得性。
可以选择三个处理器配置中的一个:
26位程序和数据空间,这个配置强制ARM在26位地址空间中进行操作。
在这个配置中只能获得四个26位模式(参照处理器模式描述);
不可能选择任何32位模式。
在所有当前的ARM6和7系列上复位(reset)时被设置为这个模式。
26位程序空间和32位数据空间。
除了禁止地址例外来允许数据传送操作访问完整的32位地址空间之外,与26位程序和地址空间配置相同。
32位程序和数据空间。
这个配置把地址空间扩展成32位,并介入了对处理器模型的重大变更。
在这个配置中你可以选择任何26位和32位处理器模式(参见下面的处理器模式)。
在配置成32位程序和数据空间的时候,ARM6和ARM7系列支持十个有所重叠的处理器操作模式:
用户模式:
正常的程序执行状态;
或User26模式:
一个26位版本。
FIQ模式:
设计来支持一个数据传送或通道处理;
或FIQ26模式:
IRQ模式:
用于通用中断处理;
或IRQ26模式:
SVC模式:
用于操作系统的保护模式
或SVC26模式:
一个26位模式。
异常终止模式(ABT模式):
在一个数据或指令预取异常终止(abort)的时候进入的模式。
未定义模式(UND模式):
在执行了一个未定义的指令的时候进入的模式。
当在一个26位处理器模式中的时候,编程模型倒退成早期的26位ARM处理器。
除了下列变动之外,它的行为与ARM2aS宏单元(macrocell)相同:
只在ARM被配置为26位程序和数据空间的时候,它才生成地址例外。
在其他配置下OS仍然可以通过使用外部逻辑模拟地址例外的行为,比如用一个内存管理单元在超出64Mbyte范围的时候生成一个异常终止,并把这个异常终止转换成给这个应用程序的一个‘地址例外陷入’。
保持在通用寄存器和程序状态寄存器之间传送数据的新指令可操作。
在调用了包含26位的ARM二进制代码的之后,操作系统可以使用这些新指令返回到一个32位模式。
当在一个32位程序和数据空间配置下的时候,所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 中文 指令 寄存器 处理器 模式