Hi,欢迎来到中国优发娱乐手机版高端品牌 - 华清远见嵌入式学院<北京总部官网>,专注嵌入式工程师培养13年!
  • 全国咨询热线:400-611-6270
  • 新浪微博
  • 微信
  • 北京
    校区
  • 上海
    校区
  • 深圳
    校区
  • 成都
    校区
  • 南京
    校区
  • 武汉
    校区
  • 西安
    校区
  • 广州
    校区
  • 沈阳
    校区
  • 济南
    校区
  • 重庆
    校区
  • 长沙
    校区
  • 研发
    中心
  • 当前位置: > 嵌入式学院 > 嵌入式学习 > 讲师博文 > ARM中非对其的存储访问操作
    ARM中非对其的存储访问操作
    时间:2017-09-07作者:华清远见
    在ARM处理器中,如果数据或指令是2字节的那么其在存储器中的存储要是半字对其的(存储的起始地址的最低一位是0b0),即存储的首地址必须是2的整数倍。如果数据或指令是4字节的那么该数据或指令在存储器中的存储是字对其的(存储的起始地址的最低两位都是0b00),即存储的首地址必须是4的整数倍。我们在访问存储器的时候,如果存储单元的地址没有按照上述规则对其,则称为非对齐的存储访问操作。   1. 非对齐的指令读取操作 当处理器在执行ARM指令的时候,ARM指令每条指令是4字节的宽度,所以对于ARM指令在存储器当中的存储是按照字对齐的方式来存储的。我们在读取一条ARM指令时如果写入到PC寄存器的值不是字对其的(PC的最后两位不是0b00),那么指令执行的结果可能是不可预知的,或者寄存器PC中不管最低的两位是什么值,寄存器PC中的地址值被送入到存储系统后,存储系统都会将其最低两位的值忽略,即认为最低两位是0b00。   2. 非对齐的数据访问操作 当ARM处理器进行对内存的读写操作时,如果所要操作的数据在内存中是非对齐的,则有可能出现以下两种运行结果: (1) 执行的结果不可预知 (2) 当操作的数据是字类型的时,忽略地址中低两位的值,即访问地址为指定的地址与0xFFFFFFFC相与的结果(Address & 0xFFFFFFFC);当操作的数据是半字类型的时,忽略地址中低一位的值,即访问地址为指定的地址与0xFFFFFFFE相与的结果(Address & 0xFFFFFFFE)。这种操作是由存储系统来完成的,地址值并不会在CPU内发生变化。 注:当发生非对其数据访问时,到底采用以上哪种方式去处理,是由当前所使用的指令所决定的。

    发表评论
    全国咨询电话:400-611-6270,双休日及节假日请致电值班手机:15010390966 在线咨询: 曹老师QQ(3337544669), 徐老师QQ(1462495461), 刘老师 QQ(3108687497) 企业培训洽谈专线:010-82600901,院校合作洽谈专线:010-82600350,在线咨询:QQ(248856300) Copyright 2004-2017 华清远见教育集团 版权所有 ,沪ICP备10038863号,京公海网安备110108001117号

    优发娱乐手机版

    百度360搜索搜狗搜索

    优发娱乐手机版

    百度360搜索搜狗搜索