- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM中文指令
ARM中文指令--寄存器和处理器模式ARM 处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六个... 寄存器 0 到寄存器 7 是通用寄存器并可以用做任何目的。不象 80x86 处理器那样要求特定寄存器被用做栈访问,或者象 6502 那样把数学计算的结果放置到一个累加器中,ARM 处理器在寄存器使用上是高度灵活的。 寄存器 8 到 12 是通用寄存器,但是在切换到 FIQ 模式的时候,使用它们的影子(shadow)寄存器。 寄存器 13 典型的用做 OS 栈指针,但可被用做一个通用寄存器。这是一个操作系统问题,不是一个处理器问题,所以如果你不使用栈,只要你以后恢复它,你可以在你的代码中自由的占用(corrupt)它。每个处理器模式都有这个寄存器的影子寄存器。 寄存器 14 专职持有返回点的地址以便于写子例程。当你执行带连接的分支的时候,把返回地址存储到 R14 中。同样在程序第一次运行的时候,把退出地址保存在 R14 中。R14 的所有实例必须被保存到其他寄存器中(不是实际上有效)或一个栈中。这个寄存器在各个处理器模式下都有影子寄存器。一旦已经保存了连接地址,这个寄存器就可以用做通用寄存器了。 寄存器 15 是程序计数器。它除了持有指示程序当前使用的地址的二十六位数之外,还持有处理器的状态。 为更清晰一些... 提供下列图表: User 模式? SVC 模式? IRQ 模式? FIQ 模式? APCSR0 ------- R0 ------- R0 ------- R0? ? ? ? a1R1 ------- R1 ------- R1 ------- R1? ? ? ? a2R2 ------- R2 ------- R2 ------- R2? ? ? ? a3R3 ------- R3 ------- R3 ------- R3? ? ? ? a4R4 ------- R4 ------- R4 ------- R4? ? ? ? v1R5 ------- R5 ------- R5 ------- R5? ? ? ? v2R6 ------- R6 ------- R6 ------- R6? ? ? ? v3R7 ------- R7 ------- R7 ------- R7? ? ? ? v4R8 ------- R8 ------- R8? ? ? ? R8_fiq? ? v5R9 ------- R9 ------- R9? ? ? ? R9_fiq? ? v6R10 ------ R10 ------ R10? ? ? ? R10_fiq? slR11 ------ R11 ------ R11? ? ? ? R11_fiq? fpR12 ------ R12 ------ R12? ? ? ? R12_fiq? ipR13? ? ? ? R13_svc? ? R13_irq? ? R13_fiq? spR14? ? ? ? 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? ? 程 序 计 数 器? S1 S0对 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 更快,所以有更多的影子寄存器
文档评论(0)