1

我打算将 Ada 用于某些程序。我记得在某处读过,您可以使用编译指示设置编译器指令来优化您的程序。更具体地说,我记得读过,如果您只需要有限的 Ada 功能子集(基本上对应于 Pascal,但使用 Ada 的强类型),您可以使用 pragma 指定一种“类 Pascal 模式”(我使用这个术语因为没有更好的表达方式)。我的目标是禁用那些我不需要的运行时检查(因为我只需要基本功能),从而减小可执行文件的大小并提高性能。我的问题是:如何设置这样的编译指示?我应该指定哪些参数/选项?谢谢

4

3 回答 3

4

这或许来自于一个误会。

Ada 不是 Pascal 的超集。将它们视为母语Algol 60的兄弟语言更为准确。Pascal 最初是由 Niklaus Wirth 开发的,是Algol 60 的简化版本。Algol 的人反而用另一种方式开发了 Algol 68。

相反,Ada 是一种从头开始设计的新语言,它借鉴了 Algol 60 的语法(在很大程度上,Java 借鉴了 C 的语法)。然而,它甚至比 Algol 68 复杂得多(有些人会使用“功能性”这个词)。

因此,在 Ada 编译器中请求“Pascal 标志”与在 Java 编译器中请求“C++ 标志”非常相似。

如果您只是在寻找免费的 Pascal 编译器,您可能会考虑使用Free PascalGNU Pascal

如果您只是想减少未使用的运行时设施的开销,您应该查看附件 H,它允许您pragma Restrictions()有选择地禁止访问 Ada 运行时的某些部分。这使您可以摆脱诸如浮点、动态分配、动态分派、任务、异常/运行时约束检查等之类的东西。

于 2013-03-07T19:00:21.290 回答
3

对不起,这是个坏主意。如果您想避免任务构造的任何可能开销,请不要使用任务!人们经常想要抑制约束检查(你可以在 GNAT 中通过编译来做到这一点-p)但是 - 根据我的经验 - 你很少得到比小的改进。

Ada 现在有pragma Restrictions,它会阻止您使用某些功能;你可以在这里看到 GNAT 。其目的是支持高完整性软件、可移植软件或高效任务运行时的生产。

于 2013-03-07T07:05:35.793 回答
-1

除非我误解了你,否则 {'Pascal-like mode'} 听起来像是特定于实现的编译指示。尽管有[time or space] and可能会影响您的最终大小的“优化限制”编译指示。

于 2013-03-07T07:00:25.163 回答