BinaryEarth 2021-12-11 11:17 采纳率: 100%
浏览 24
已结题

这个寻址哪位可以解答一下,看不太明白

img

如图所示,这是一段STM32的寻址计算公式,哪位学长可以解答一下,看不太明白,这是如何寻找到那一位的地址的?

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2021-12-11 13:33
    关注

    是位寻址地址的计算
    这个计算公式需要先理解这个公式的物理意义。
    假设我们自己设计一款 32 位 CPU 有一组能按位去寻址特殊的寄存器,这组寄存器有0x1000个按顺序编号为 REG_NUM 0-0x0fff ,每个寄存器只有 8 位,这每个位为 BIT_NUM 0-7
    我们需要怎么去寻址?CPU 的地址一般都是按字节计算。这组寄存器就需要 0x1000 * 8 个地址空间。
    远大于这组寄存器原始的地址空间 0x1000 ,我们需要将这个按位寻的地址重新映射一块区域,这块区域的基地址为 BASE_ADDR
    我们怎么计算这个地址 ?

    BASE_ADDR + REG_NUM * 8 + BIT_NUM

    这是 32 位 CPU 需要 4 字节对齐去寻址就计算需要做下调整

    BASE_ADDR + ( REG_NUM * 8 + BIT_NUM ) * 4 = BASE_ADDR + REG_NUM * 32 + BIT_NUM * 4

    看看 STM32 的公式是不是一样 ?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址