开启mmu后,call和jalr的区别
  pOQlk6xJ7yt8 2024年04月10日 42 0

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

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

让我们看看jalr

和call(伪指令!!!)

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

悬着的心也死了!!!

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

 

 

太复杂了!看不懂!

结论

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年04月10日 0

暂无评论

推荐阅读
  bgxXjYYEVSxV   2天前   7   0   0 嵌入式
  bgxXjYYEVSxV   2天前   5   0   0 嵌入式
I2C
  bgxXjYYEVSxV   2天前   6   0   0 嵌入式
PWM
  bgxXjYYEVSxV   2天前   5   0   0 嵌入式