Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly Ada和汇编_Assembly_X86_Ada - Fatal编程技术网

Assembly Ada和汇编

Assembly Ada和汇编,assembly,x86,ada,Assembly,X86,Ada,我正在考虑制作一个在裸CPU(x86)、32位保护模式和无操作系统上运行的硬件调试工具。由于时间限制,我不会完全在x86汇编中编写该工具。我喜欢Ada语言(但对它缺乏经验),并认为在这个项目中使用Ada而不是C可能会很有趣 有了C,人们可以使用内联汇编或调用汇编中编写的子程序来访问BIOS,以实现键盘I/O或在屏幕上显示文本等基本功能。Ada有类似的能力吗?如果是这样,有人知道调用汇编方法并与之链接的资源或教程吗?您可以在Ada中使用内联汇编代码。您需要使用提供(过载)Asm功能的System.

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


有了C,人们可以使用内联汇编或调用汇编中编写的子程序来访问BIOS,以实现键盘I/O或在屏幕上显示文本等基本功能。Ada有类似的能力吗?如果是这样,有人知道调用汇编方法并与之链接的资源或教程吗?

您可以在Ada中使用内联汇编代码。您需要使用提供(过载)
Asm
功能的
System.Machine\u code
软件包。

蚊虫参考手册中有一节介绍蚊虫,虽然它是特定于蚊虫的,即使您使用的是不同的编译器,您也应该能够大致了解它的工作原理。

Adacore有一节介绍了我发现有用的示例

注:示例适用于32位体系结构,使用“-m32”,
(或稍微更改示例)

为什么坚持不使用操作系统。访问所有硬件(屏幕、键盘等)都很难,为什么不让操作系统来处理呢。Linux是免费的;-)我为什么坚持?我是在调试硬件,不是在编写Linux软件我需要做PCI总线复位和修改配置寄存器,以及。我对Linux的底层工作做得不多,但在Windows世界中,奇偶校验错误(PERR#)、系统错误(SERR#)和PCI总线重置(reset#)都是灾难性的事件。谢谢,我会坚持使用GNAT,因为我想使用免费工具。毕竟这是一个爱好项目。