【问题标题】:Nintendo DS homebrew with Ada?Nintendo DS 与 Ada 的自制软件?
【发布时间】:2010-09-13 19:05:09
【问题描述】:

注意:我对 GCC 工具链知之甚少,所以这个问题可能没有多大意义。

既然 GCC 包含一个 Ada 前端,它可以发出 ARM,而 devKitPro 是基于 GCC 的,那么在 DS 上是否可以使用 Ada 而不是 C/C++ 编写代码?

编辑:看来devKitARM使用的目标是arm-eabi。

【问题讨论】:

  • 很公平 - 我正在想象一些针对任天堂的 DoD 项目。

标签: gcc embedded ada nintendo-ds homebrew


【解决方案1】:

在实际平面上,这是不可能的。

在理论上,您可以使用一个自定义 Ada 解析器(我在 ANTLR 网站上找到了 this one,但它已经很老了)将 Ada 翻译成 C/C++,然后将其提供给 devkitpro .

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

【讨论】:

  • 为 Ada 编写编译器或翻译器本身就是一个巨大的项目,工作量太大了。不过,一个非常基本的 Ada->C/C++ 翻译器是可行的。
【解决方案2】:

将语言移植到任天堂 DS 时要考虑的一件事是它的堆栈相对较小 (16KB)。有一些可能的解决方法,例如当堆栈已满时将 SRAM 堆栈内容交换到 DRAM (4MB) 或仅将整个堆栈都放在 DRAM 中(假设非常慢)。

我对 Dre 表示赞同,您必须在您想要使用的 Ada 库函数和 DS 上的现有库(希望涵盖大部分硬件内容)之间提供粘合剂。

【讨论】:

  • 是的,小心不要让堆栈溢出。 :)
【解决方案3】:

是的,有可能,请参阅我的项目https://github.com/Lucretia/tamp 并按照我的脚本构建交叉编译器。然后您就可以使用 Ada 来定位 NDS。我还构建了一个基本的 RTS,它将为您提供本地异常处理。

还有@Martin Beckett,为什么认为 Ada 直接针对 DoD 的东西?他们几年前放弃了授权,Ada 可以轻松用于任何项目,您确实意识到 Ada 是一种通用编程语言,不是吗?

【讨论】:

  • 我确实计划使用您的交叉工具来定位 DS。也许我会先开始瞄准GBA。
  • 我最近设法使用 GCC 4.6.2 获得了一个不错的交叉构建,而没有使用丑陋的黑客。有关链接,请参阅我的职业 2.0 个人资料。虽然它不是脚本,但说明在上面的链接上。
【解决方案4】:

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

也许可以构建 ada 编译器,但我非常怀疑您是否能够设法在 DS 本身上运行任何有用的东西。 devkitPro 肯定不会在我们生产的软件包中提供 ada 编译器。

【讨论】:

  • 对于那些不知道的人,WinterMute 是 devkitPro 的维护者和创建者。
【解决方案5】:

(免责声明:我不认识 Ada)

可能。

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

但是,您可能会发现自己编写了大量的 C“胶水”代码来与各种硬件寄存器等接口。

【讨论】:

    猜你喜欢
    • 2010-09-13
    • 2010-09-05
    • 2011-07-06
    • 2010-11-02
    • 1970-01-01
    • 2015-12-07
    • 2016-01-24
    • 2016-02-15
    • 1970-01-01
    相关资源
    最近更新 更多