爱问ARM中文指令寄存器和处理器模式Word文档格式.docx

上传人:b****6 文档编号:15940415 上传时间:2022-11-17 格式:DOCX 页数:14 大小:30.01KB
下载 相关 举报
爱问ARM中文指令寄存器和处理器模式Word文档格式.docx_第1页
第1页 / 共14页
爱问ARM中文指令寄存器和处理器模式Word文档格式.docx_第2页
第2页 / 共14页
爱问ARM中文指令寄存器和处理器模式Word文档格式.docx_第3页
第3页 / 共14页
爱问ARM中文指令寄存器和处理器模式Word文档格式.docx_第4页
第4页 / 共14页
爱问ARM中文指令寄存器和处理器模式Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

爱问ARM中文指令寄存器和处理器模式Word文档格式.docx

《爱问ARM中文指令寄存器和处理器模式Word文档格式.docx》由会员分享,可在线阅读,更多相关《爱问ARM中文指令寄存器和处理器模式Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

爱问ARM中文指令寄存器和处理器模式Word文档格式.docx

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 

0

程序计数器 

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位程序和数据空间配置下的时候,所

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1