zoukankan      html  css  js  c++  java
  • [问题笔记][指针相加翻译成汇编右移2位]

    问题描述:

      创建MMU的转换表,在构建每个表项时,基地址指针加上相对偏移,翻译成汇编,偏移被右移了2位,再加上基地址。

    问题分析:

      vaddr的高12位是段地址相对于基地址的偏移数,MMU在寻址时会根据vaddr高12位的偏移乘以4变成相对地址来找到表项的偏移地址。所以指针翻译成汇编右移2位表示的是乘以4,计算出相对于基地址的偏移地址,而不是偏移数。

    unsigned long *ttb;
    unsigned long vaddr;
    ttb = ttb + (vaddr >> 20);
    ldr     r3, [fp, #-12]
    lsr     r3, r3, #20
    lsl     r2, r3, #2
    ldr     r3, [fp, #-16]
    add     r3, r3, r2
    str     r3, [fp, #-16]
    
  • 相关阅读:
    10.28
    10.25
    10.21
    移动第七次作业
    移动第六次作业
    移动第五次作业
    移动第四次作业
    移动第3次作业
    移动第二次作业
    移动第一次作业
  • 原文地址:https://www.cnblogs.com/d442130165/p/4959558.html
Copyright © 2011-2022 走看看