将 ada 与汇编混合
如何将 Ada 代码与汇编代码(使用 GAS 汇编)混合在一起?
我知道如何将 Ada 与 C 链接,但如何与汇编链接?我知道 gcc 从 Ada 代码生成汇编代码,因此,我认为可以进行这种交叉链接。
How I can mix Ada code with assembly (assembled using GAS)?
I know how to link Ada with C, but how I can link with assembly? I know that gcc generates assembly code from Ada code, and because of this, I think is possible to do this cross-linking.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可能会将程序集编译为 .o 目标文件,并将其作为参数提供给 Ada 编译器。
Presumably you would compile the assembly into a .o object file and give this as a parameter to your Ada compiler.
如果您在 Intel x86 上使用 GNAT,则 内联汇编器 包括相关例子。
附录:
-S
选项允许“检查生成的汇编代码”。这适用于 Ada、C、C++ 等。If you are using GNAT on Intel x86, the Inline Assembler includes related examples.
Addendum: The
-S
option allows one "to examine the generated assembly code." This applies to Ada, C, C++, etc.如果您想使用 Ada 执行任何类型的混合语言编程,包括 Ada/Assember,您可能应该查看编译器的文档 接口编译指示,特别是其允许的调用约定。
例如,Gnat 提供了
汇编器
约定用于pragma import
/export
。通常,您必须将汇编器设计为充当子程序,该子程序使用与接口编译指示中使用的“约定”兼容的调用约定。
大多数编译器还通过 系统支持某种内联汇编.Machine_Code 包。这允许您将少量汇编语言与 Ada 混合在同一源文件中。
If you want to perform any kind of mixed-language programming with Ada, including Ada/Assember, you should probably look at your compiler's documentation on Interfacing pragmas, in particular its allowed calling conventions.
For example, Gnat provides an
Assembler
convention forpragma import
/export
.Generally you will have to craft your assembler to act as a subprogram which uses a calling convention compatible with the "convention" used in your interfacing pragma.
Most compilers also support some kind of inline assembly, via the System.Machine_Code package. This allows you to mix small amounts of assembly language right in the same source files with your Ada.