2009-05-21 60 views
5

我期待在做裸CPU(86),32位保護模式和沒有OS上運行的硬件調試工具。由於時間限制,我不會在x86程序集中編寫所有的工具。我喜歡Ada語言(但對此並不熟悉),並認爲在此項目中使用Ada而非C可能很有趣。阿達和裝配

用C可以使用內聯彙編或致電彙編語言編寫的子程序訪問BIOS的基本的東西,如鍵盤I/O或顯示在屏幕上的文字。阿達是否有類似的能力?如果是這樣,有沒有人知道任何資源或教程來調用匯編方法和鏈接?

+2

爲什麼你堅持不使用OS。訪問所有硬件(屏幕,鍵盤等)很難,爲什麼不讓操作系統處理它。 Linux是免費的;-) – lothar 2009-05-21 03:16:25

+0

爲什麼我堅持?那麼,我正在調試硬件,而不是編寫Linux軟件! :P 我需要做的PCI總線重置和修改配置寄存器和。我在Linux低層工作方面做得並不多,但在Windows世界中,奇偶校驗錯誤(PERR#),系統錯誤(SERR#)和PCI總線重置(RESET#)是災難性事件。 – 2009-05-22 02:04:43

回答

5

可以在阿達使用內聯彙編代碼。您需要使用System.Machine_Code包,它提供了(重載)Asm功能。

+0

謝謝!這應該夠了吧! – 2009-05-21 04:15:00

2

GNAT參考手冊有關於Machine Code Insertions的章節,雖然它是GNAT特定的,但即使您使用的是不同的編譯器,也應該能夠理解它的工作原理。