开心生活没一天 2022-08-11 17:43 采纳率: 69.2%
浏览 722
已结题

请问按字节编址和按字编址和按字,字节寻址到底有啥区别

http://t.csdn.cn/MdZDA
按上面链接说法,按字节编址后,mar一个地址就代表内存中的一个字节,而如果mdr不是一个字节的话,那mdr乘mar就不是内存大小了吗,但是我下面后两张图是字节编址但是内存大小也是mdr乘mar。这里为什么没有留地址线来区别字内的字节

img

img

然后下面这张图这里说的存储字长为32位,可按字节,半字,字寻址是什么意思,存储字长为32位,不就代表着Mdr为32位,是按字编址吗,为什么还能进行字节寻址。

img

链接的说法和书上的说法哪个是对的,还是他们都是对的只是我理解有问题
不过字对齐这个问题好像就是每次只能取32位,才导致要对齐才能一次取完,但书上又说可按字节,半字,字寻址,这又是啥意思,按字节寻址寻到的地址取出来的是字节还是32位,我真的晕了

  • 写回答

3条回答 默认 最新

  • 嵌入式er. 2022-08-13 23:48
    关注
    获得2.50元问题酬金

    这里提到几个问题:
    1.字节编址
    比如内存有1K大小,可以存储1024个BYTE数据,编址为0x0000-0x0400范围,一个地址可以存一个字节,这就是按照字节编址(大部分就是这样);一个地址存4个字节,这就是按照字编址;
    2.寻址
    前面已经介绍了内存1K,按照字节编址,按照字节、半字、字寻址,简单来说,就是一次读写几个地址的数据,一般可以做到读写4个字节的数据、2个字节数据、1个字节数据,也就是一个字节的编址,可以采用字节、半字、字寻址。
    实际常用读写4个字节的数据,比如0x0000-0x0003 分别对应数据为1 2 3 4,
    0x0004-0x0007 分别对应数据为5 6 7 8
    采用小端存储,4个字节的读写协议:
    读取0x0000地址,其结果为0x04030201
    读取0x0004地址,其结果为0x08070605
    这个过程其实就是寻址。
    3.数据对齐
    在基于4个字节指令读写基础上,如果你的数据是1 2 3 4那么读一次就可以了,读0x0地址就可以。
    如果读取3 4 5 6,那么就要读两次了:读0x0的高两个字节、0x4的低两个字节。多次读写便会会影响性能,这就是为什么数据需要对齐的原因,说白了就是空间换时间的一种策略。
    如果以上有问题,请私信联系,谢谢。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 赞助了问题酬金5元 8月11日
  • 修改了问题 8月11日
  • 创建了问题 8月11日

悬赏问题

  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused