我想知道有编译器经验的人是否可以告诉我我的想法是否可行。
基本上,我将向我的一位教授提出一个项目构想,并参加一个"项目课程" - 我在这里不太详细说明这个过程,只是说它是一个本科项目课程,我可以提出这个想法。
我将制作一个新的RISC ISA(类似于MIPS但没有延迟插槽,没有浮点......)并为它编写软件模拟器,因为这完全是用软件完成的。
但我要把它变成哈佛架构CPU - 这意味着,数据无法执行;代码和数据是分开的。
为它制作ISA和模拟器相对容易,我不希望遇到任何我不熟悉的事情。
然后我想为我的新ISA创建一个gcc或llvm后端,以便可以为我的新ISA编译C程序。
现在我从未编写过编译器。鉴于我的ISA主要是在MIPS之后建模的,我可以在MIPS(或其他一些RISC)后端之后建模后端。
我的问题是哈佛建筑部分。我是否应该在这里遇到重大问题?这会如何使代码生成部分复杂化?
最后,我将编写一份关于我模拟的哈佛CPU的报告并分析它的一些安全方面(即不允许数据执行可以防止缓冲区溢出攻击等等......)。
如果我滥用了“哈佛建筑”这个术语"在这里,让我澄清一下我的意思。我不是在谈论内部缓存或类似的东西。我只是指让CPU保持代码和数据分开,以便无法执行数据。