毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

mmu_enable指令执行的前后顺序

更新时间:2013-5-6:  来源:毕业论文

mmu_enable指令执行的前后顺序

前提:
    1,cpu就是取值运算。当没有分支指令时叫顺序执行。pc指针自加,取到后面的指令。毕业论文 
    2,当有分支指令时,跳转到某一个位置取指令去执行。
问题:
    当enable mmu后,pc指针还是自动加操作?如果这时候是自加的操作,在enable mmu后和之前的地址就是不一样了。需要转换,这时候如何实现无缝跳转?
1 __turn_mmu_on:
2     mov    r0, r0
3     mcr    p15, 0, r0, c1, c0, 0        @ 设置cp#15控制寄存器(启用MMU)
4     mrc    p15, 0, r3, c0, c0, 0        @ read id reg
5     mov    r3, r3
6     mov    r3, r13                        @ r3中装入最后要跳入的*虚拟*地址
7     mov    pc, r3                        @ 跳转到__mmap_switched
8 __enable_mmu_end:

A:
假设mmutable已近建立完成。就是最简单的线性映射的关系:
0xC000 0000,0xC000 0000+OFFSET -> 0x5000 0000,0x5000 0000+OFFSET
假设 3 4 行代码之前pc的内容是0xC0008000的值。但是在第5行后pc的内容是自动更新吗?还是依旧在0xC000800C?或者是0x5000000C?
假设__mmap_switched这个函数的地址是连接器按照0xC0000000的base来连接的,那么在mov pc r3的时候是不是要把r3寄存器内容修改成虚拟地址,应为这个时候mmu已经启动了。

B:
在补充一个问题:
paging_ini函数会再次建立页表,这时候的页表为精细页表(4K)的。那么在paging_init的之后在哪里有调用enable_mmu的函数,再次使能mmu,使mmu进入(4K)的页表模式?

新手问个问题,以指令寄存器存储一条指令开始,到主存中获得数据之前,指令的地址码部分是如何在CPU内部及主存之间流动和虚实转换的?(希望具体到寄存器如PC寄存器、总线等)
关键的PC寄存器与MMU是怎么样联系的?

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。