与AdaCore的最新的GNAT Pro Ada编译器,现在可以使用它的通用代码生成器(CCG)生成C源代码。这是为了提供可移植性到绝大多数有C编译器的平台。它最初是为了支持流行的8位体微芯片AVR是AdaCore不支持的,它的原生代码支持针对平台,如32位和64位的x86、ARM、RISC-V和Power架构。
使用CCG只是一个命令行选项的问题(参见下面的codelist).它处理Ada的一个子集,但这仍然包括定点支持和最小标准库等特性。不支持的特性是那些很难实现或者C编译器不支持的特性,比如溢出检查。这是使用SPARK支持的原因之一,SPARK是Ada的一个可证明子集。CCG与SPARK应用程序一起工作。
像这样将Ada/SPARK代码编译成C语言就像命令行开关一样简单。
还缺少内联插入汇编代码的能力。但是,编辑生成的C代码也可以做到这一点,因为C编译器支持这样的特性。
《美国残疾人法》。如果提供了rts_单调时钟和rts_delay_until过程,则支持Real_Time运行时包。在线文档涵盖了支持和不支持的所有细节。
支持8位平台只是使用CCG的原因之一。它可以处理不支持Ada和SPARK编译器的其他平台。
如果您想快速学习基本的Ada和SPARK编程,请查看AdaCore的在线培训工具.您可以在线编辑源代码并对其进行编译和执行。