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

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

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日