Nintendo DS与Ada一起自制吗?
时间:2020-03-06 14:50:20 来源:igfitidea点击:
注意:我对GCC工具链了解甚少,所以这个问题可能没有多大意义。
由于GCC包含Ada前端,并且可以发出ARM,并且devKitPro基于GCC,是否可以使用Ada代替C / C ++在DS上编写代码?
编辑:似乎devKitARM使用的目标是arm-eabi。
解决方案
(免责声明:我不认识Ada)
可能吧。
我们可能可以构建devKitPro来使用Ada,但是,预先提供的二进制文件(至少对于OS X是这样)没有编译Ada支持。
但是,我们可能会发现自己编写了大量的C"胶水"代码来与各种硬件寄存器等进行接口。
将语言移植到任天堂DS时要考虑的一件事是它具有相对较小的堆栈(16KB)。有可能的解决方法,例如在堆栈变满时将SRAM堆栈内容交换到DRAM(4MB)中,或者将整个堆栈放入DRAM中(假定速度非常慢)。
其次,我要谈谈Dre的事实,那就是我们必须在想要使用的Ada库函数和DS上的现有库(希望涵盖大多数硬件)之间提供粘合。
devkitPro不是工具链,编译器或者任何软件包。用于DS的工具链是devkitARM,这是devkitPro提供的工具链之一。
可能可以构建ada编译器,但我非常怀疑我们是否能够设法在DS本身上运行任何有用的东西。 devkitPro绝对不会在我们生产的软件包中提供ada编译器。
在实际的平面上,这是不可能的。
从理论上讲,我们可以使用一个自定义的Ada解析器(我在ANTLR网站上找到了这个解析器,但是它已经很老了),以便将Ada转换为C / C ++,然后将其提供给devkitpro。
但是,构建这种翻译器的工作可能等同于创建游戏本身(如果不是更高的话)。