[问题笔记][指针相加翻译成汇编右移2位]
2015-11-12 16:57
260 查看
问题描述:
创建MMU的转换表,在构建每个表项时,基地址指针加上相对偏移,翻译成汇编,偏移被右移了2位,再加上基地址。
问题分析:
vaddr的高12位是段地址相对于基地址的偏移数,MMU在寻址时会根据vaddr高12位的偏移乘以4变成相对地址来找到表项的偏移地址。所以指针翻译成汇编右移2位表示的是乘以4,计算出相对于基地址的偏移地址,而不是偏移数。
创建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]
相关文章推荐
- URL中的特殊字符
- SQL中concat()函数、substr()函数与length()函数
- CreateJs系列教程之 EaselJs_4_绘制图片(Bitmap)
- 对一组数乱序
- auto ssh other linux host via expect
- 用crosstool-ng构建自己的交叉编译工具链
- dubbo内部逻辑
- 异步 多线程 线程池
- 【金】nginx+uwsgi+django+python 应用架构部署
- Windows CMD命令大全
- 一直在DEBUG整理
- windows 多线程捕获未处理的异常,防止崩溃的地方影响到其它线程
- 网络流量测试方法
- XML入门(一)
- ARM Linux系统调用的原理
- 用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧
- jQuery 获取屏幕高度、宽度
- Spring、AOP详解
- jquery 元素控制(追加元素/追加内容)介绍及应用
- linux下C获取系统时间的方法