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。

但是,构建这种翻译器的工作可能等同于创建游戏本身(如果不是更高的话)。