阿达和集会

时间:2009-05-21 03:13:48

标签: assembly x86 ada

我正在寻找一个在裸CPU(x86),32位保护模式和无操作系统上运行的硬件调试工具。由于时间限制,我不会在x86程序集中编写所有工具。我喜欢Ada语言(但对它缺乏经验)并且认为在这个项目中使用Ada而不是C可能会很有趣。

使用C,可以使用内联汇编或调用程序集中编写的子程序来访问BIOS,以获取键盘I / O等基本内容或在屏幕上显示文本。 Ada有类似的能力吗?如果是这样,有没有人知道调用汇编方法和链接它们的任何资源或教程?

3 个答案:

答案 0 :(得分:5)

您可以在Ada中使用内联汇编代码。您需要使用提供(重载)System.Machine_Code函数的Asm包。

答案 1 :(得分:2)

GNAT参考手册有一个关于Machine Code Insertions的部分,虽然它是特定于GNAT的,但是即使你使用不同的编译器,也应该能够大致了解它是如何工作的。

答案 2 :(得分:0)

Adacore 有一个部分包含我认为有用的示例。

https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/inline_assembler.html

注意:示例适用于 32 位架构,请使用“-m32”, (或稍微更改示例)