使用Ada语言开发Nintendo DS homebrew?

5
注意:我对GCC工具链知之甚少,因此这个问题可能没有太多意义。
由于GCC包含Ada前端,并且可以发出ARM指令,而devKitPro基于GCC,是否有可能使用Ada代替C/C++在DS上编写代码?
编辑:似乎devKitARM使用的目标是arm-eabi。

好的,我之前想象的是一个针对任天堂的国防部项目。 - Martin Beckett
5个回答

6

devkitPro不是一个工具链、编译器或任何软件包。用于DS的工具链是devkitARM,是由devkitPro提供的工具链之一。

可能可以构建ada编译器,但我非常怀疑您是否能够在DS本身上运行任何有用的内容。devkitPro肯定不会将ada编译器作为我们生产的软件包的一部分提供。


2
对于那些不知道的人,WinterMute 是 devkitPro 的维护者和创造者。 - LiraNuna

6
是的,这是可能的。请查看我的项目https://github.com/Lucretia/tamp,并按照我的脚本构建交叉编译器。然后您将能够使用Ada来针对NDS进行开发。我还构建了一个基本的运行时系统,它将为您提供本地异常处理。
此外,@Martin Beckett,您为什么认为Ada专门面向DoD领域?他们多年前就放弃了这项法规,并且Ada很容易用于任何项目,您知道Ada是一种通用编程语言,对吧?

我计划使用你们的交叉工具来针对DS。也许我会先开始针对GBA。 - Rommudoh
我最近成功地使用GCC 4.6.2进行了一个不需要丑陋的hack的交叉编译。请查看我的Careers 2.0个人资料以获取链接。虽然它没有脚本,但上面的链接中有说明。 - Luke A. Guest

2

(免责声明:我不了解Ada语言)

有可能。

可能可以构建devKitPro以使用Ada语言,但是预先提供的二进制文件(至少对于OS X而言)未编译支持Ada语言。

但是,您可能会发现自己需要编写大量C语言“粘合”代码来与各种硬件寄存器等进行接口交互。


2
考虑将语言移植到任天堂DS时需要考虑其相对较小的堆栈大小(16KB)。有可能的解决方法是当堆栈满时将SRAM堆栈内容交换到DRAM(4MB)中,或者仅在DRAM中具有整个堆栈(假定速度非常慢)。此外,我同意Dre的观点,即您需要提供Ada库函数与DS上现有库(希望覆盖大部分硬件内容)之间的粘合剂。

1
是的,小心不要出现堆栈溢出。 :) - unwind

0
在实践层面上,这是不可能的。
在理论层面上,你可以使用一个自定义的Ada解析器(我在this one ANTLR网站上找到了一个,但它相当古老),以便将Ada翻译为C/C++,然后将其提供给devkitpro。
然而,建立这样的翻译器所需的工作量可能会等于(如果不是更高于)创建游戏本身。

写Ada编译器或翻译器是一个巨大的项目,需要太多的工作量。不过,一个非常基本的Ada->C/C++翻译器还是可以做到的。 - Luke A. Guest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接