免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 923 | 回复: 0
打印 上一主题 下一主题

ARM寄存器学习笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-04 01:33 |只看该作者 |倒序浏览

学习ARM一段时间了,一直没有机会好好总结一下,现在放假了终于有机会理一理思路,总结一下,便于复习记忆。
arm 基础
一、ARM寄存器    无论是学习哪一种处理器,首先需要明确的就是这种处理器的寄存器以及工作模式。    ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。1、不分组寄存器(R0-R7)    不分组也就是说说,在所有的处理器模式下指的都时同一物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用一个名字相同的物理寄存器,就是使用的同一个寄存器,这样可能造成寄存器中数据被破坏,所以在进行模式切换时必须加以保护。 2、备份寄存器(R8-R14)    对于R8-R12来说,除在快速中断模式下,每个模式对应相同物理寄存器,所以在FIQ模式下可不必保护和恢复中断现场。     对于R13-R14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式和系统模式共用的。    寄存器R13常用做栈指针SP,除用户和系统模式外,其他模式在使用时的名字构成为R13_。    寄存器R14又被称为连接寄存器(LR),除用户和系统模式外,其他模式在使用时的名字构成为R14_。    有下面两种特殊用途:    A、每个处理器模式自己的物理R14中存放在当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。    B、当异常中断发生时,该异常模式下的R14被设置成保存该模式基于PC的返回地址,对于有些异常模式,R14的值有可能与将返回的地址有个常数的偏移量,不同模式偏移量还有所不同(在ARM 的异常处理里有详细介绍)。 3、程序计数器R15    对于用户来说,尽量避免使用STR/STM指令来保存R15的值。当成功向R15写入一个地址数值时,程序将跳转到该地址执行。    在ARM状态下指令总是字对齐的,所以PC的PC[1:0]位恒为零,在想PC写入地址时一定要注意将PC[1:0]设为零。    ARM采用的是3级流水线结构,所以PC指向的是当前执行指令的下两条指令,PC-8为当前指令地址。 4、程序状态寄存器    CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。同时除了用户和系统模式以外,每中处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。当在用户模式和系统模式中访问SPSR,将会产生不可预知的结果。CPSR和SPSR的格式相同,如下:       0:M0       1:M1       2:M2       3:M3       4:M4       5:T(=1 Thumb执行)       6:F(=1是禁止)       7:I(=1是禁止)
    注意:M0~M4并不是所有的组合都定义了有效的处理模式,如果错误设置,将会引起无法预料的错误。
    27:Q 在ARM V5的E系列处理器中,CPSR的bit[27]称为q标识位,主要用于指示增强的dsp指令是否发生了溢出。同样的spsr的bit[27]位也称为q标识位,用于在异常中断发生时保存和恢复CPSR中的Q标识位。在ARM V5以前的版本及ARM V5的非E系列的处理器中,Q标识位没有被定义
    28:V 对于加减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号为溢出;通常其他指令不影响V位。对于其他指令,V统常不发生变化。
    29:C 下面分四种情况讨论C的设置方法:    在加法指令中(包括比较指令CMN),当结果产生了进位,则C=1,表示无符号运算发生上溢出;其他情况C=0。    在减法指令中(包括减法指令CMP),当运算中发生借位,则C=0,表示无符号运算数发生下溢出;其他情况下C=1。    对于包含移位操作的非加减运算指令,C中包含最后一次移出位的数值。    对于其他非加减运算指令,C位的值通常不受影响。
    30:Z z=1表示运算的结果为零;z=0表示运算的结果不为零。对于CMP指令,Z=1表示进行比较的两个数大小相等。
    31:N 当两个表示的有符号整数运算时,n=1表示运算结果为负数,n=0表示结果为正书或零。
MRS:状态寄存器到通用寄存器的传送指令。MSR:通用寄存器到状态寄存器的传送指令。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25572/showart_665569.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP