微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

哈佛架构微处理器和 GCC 跳转表放置的概念问题

如何解决哈佛架构微处理器和 GCC 跳转表放置的概念问题

作为学习练习,我正在从头开发流水线 NIOS2 微处理器(英特尔 FPGA 生态系统的一部分)。这是一个具有独立指令和数据存储器总线的哈佛架构处理器。

当我编译 C case 语句时,GCC 创建一个 jump table 并将其直接放置在代码的其余可执行部分旁边。这会产生一个问题,因为处理器通过数据存储器总线加载跳转表值,该总线未连接到程序存储器。

我知道在实践中,单独的内存总线是通过缓存层次结构连接的,但我没有缓存,而且我一直在两条总线之间保持严格的分离。

作为一种解决方法,我将程序存储器设为双端口并将两条总线连接到它,但这似乎不是正确的解决方案。

有没有办法让GCC把跳转表和可执行代码分成不同的部分?如果没有,应该有吗?思考这个问题的正确方式是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。