[嵌入式Linux应用开发完全手册][韦东山]讲解MMU的时候,构造段描述符地址的语句是否有误
来源:互联网 发布:京东的域名花了多少钱 编辑:程序博客网 时间:2024/06/11 14:39
求助]这本书在讲解MMU的时候,构造段描述符地址的语句是否有误~!?
我指的是例子代码那里,例如:
*(mmu_tlb_base+virtuladdr>>20)
书上就是这样构造一级页表的段描述符存储地址,但是此处的virtual address在向右移动了20位之后并没有再向左移动4位~!
virtual address右移8位的意思应该是要找出地址所在的段,然后再向左移4位应该是使得最后构造的段描述符存储地址的低两位为0,从而提取段描述符,但是书上例子并没有这样做,可是我看Linux内核的启动代码的时候发现了在构造一级页表的时候这个virtual address只移动了18位,就因为这两者的不同,我困惑了很久,望高手解答~!
解答:由这个式子:段描述符的地址=Translation base(高18位)+Table index(低12位)+00(低两位)不少人会以为
*(mmu_tlb_base+virtuladdr>>18)才是正确的。
其实不然,这其实是指针操作的问题,主要是要注意到(mmu_tlb_base+1)的正确含义。结合者汇编的知识理解,它不是指移动了一个字节,而是移动了一个存储单元,即4个字节。所以原式中virtuladdr>>20多移了2位,即缩小了4倍,而在进行(mmu_tlb_base+virtuladdr>>2)时会将这4倍补回来,正好符合va向右移动18的要求。
- [嵌入式Linux应用开发完全手册][韦东山]讲解MMU的时候,构造段描述符地址的语句是否有误
- 韦东山《嵌入式Linux应用开发完全手册》配套视频教程
- 《嵌入式LINUX应用完全开发手册》之 MMU 实验
- 《嵌入式LINUX应用开发完全手册》-MMU
- 好书推荐——嵌入式Linux应用开发完全手册(作者韦东山)
- 资源共享——《嵌入式Linux应用开发完全手册》韦东山 PDF电子档下载
- 韦东山《嵌入式linux应用开发》 开发环境搭建过程的问题
- 嵌入式Linux应用开发完全手册
- 《嵌入式Linux应用开发完全手册》---开篇
- 嵌入式linux应用开发完全手册 关于pc为什么指向下两条指令的位置问题
- 【转改】嵌入式linux应用开发完全手册 5.2以总线方式访问硬件,地址对齐。
- 《嵌入式linux应用程序开发完全手册》MMU硬件编程学习笔记
- 《嵌入式linux应用开发完全手册》核心笔记(全)
- 嵌入式Linux应用开发完全手册(二)GPIO
- 嵌入式Linux应用开发完全手册(三)中断
- 嵌入式Linux应用开发完全手册(四)UART
- 嵌入式linux应用开发完全手册学习笔记二(嵌入式linux开发环境搭建)
- 韦东山嵌入式Linux
- MIPS DMIPS MFLOPS名词解释
- Redhat9上samba安装过程
- spring整合quartz
- Linux 启动过程详解
- VMware虚拟机安装RedHat Linux9.0 无法上网 解决方法
- [嵌入式Linux应用开发完全手册][韦东山]讲解MMU的时候,构造段描述符地址的语句是否有误
- 关于ark取得进程的镜像文件路径
- 一道练习题引申出来的知识点(一) 文件以及文件流的操作
- GCC安装
- 程序员,你真的懂得收发电子邮件吗?
- ARM 8位位图 常数说明
- SDRAM 的工作原理
- 如何在Linux下安装Qt
- 如何启动vsftp服务