开启mmu后,call和jalr的区别

在我写虚拟内存时遇到一些问题,jalr t0就是可以的,而call main则没办法成功

而且这里默认main是偏移前的地址,怪哉!!!

让我们看看jalr

和call(伪指令!!!)

然后在链接后看看main的地址,主要看程序中main是不是偏移

悬着的心也死了!!!

查看一下ucore也有类似的问题,看看他们怎么解释

 

 

太复杂了!看不懂!

结论

在mmu之前jalr已经将pc值设置为绝对地址(也就是物理main+偏移=虚拟main),而call则不同,它是一条伪指令是在mmu后面执行的,这个就会造成:call到虚拟main+偏移=非法访问!

热门相关:赠我深爱如长风   战神小农民   寡糖电影   惊悚乐园   重生不嫁豪门