我期待在做裸CPU(86),32位保護模式和沒有OS上運行的硬件調試工具。由於時間限制,我不會在x86程序集中編寫所有的工具。我喜歡Ada語言(但對此並不熟悉),並認爲在此項目中使用Ada而非C可能很有趣。阿達和裝配
用C可以使用內聯彙編或致電彙編語言編寫的子程序訪問BIOS的基本的東西,如鍵盤I/O或顯示在屏幕上的文字。阿達是否有類似的能力?如果是這樣,有沒有人知道任何資源或教程來調用匯編方法和鏈接?
我期待在做裸CPU(86),32位保護模式和沒有OS上運行的硬件調試工具。由於時間限制,我不會在x86程序集中編寫所有的工具。我喜歡Ada語言(但對此並不熟悉),並認爲在此項目中使用Ada而非C可能很有趣。阿達和裝配
用C可以使用內聯彙編或致電彙編語言編寫的子程序訪問BIOS的基本的東西,如鍵盤I/O或顯示在屏幕上的文字。阿達是否有類似的能力?如果是這樣,有沒有人知道任何資源或教程來調用匯編方法和鏈接?
可以在阿達使用內聯彙編代碼。您需要使用System.Machine_Code
包,它提供了(重載)Asm
功能。
謝謝!這應該夠了吧! – 2009-05-21 04:15:00
GNAT參考手冊有關於Machine Code Insertions的章節,雖然它是GNAT特定的,但即使您使用的是不同的編譯器,也應該能夠理解它的工作原理。
爲什麼你堅持不使用OS。訪問所有硬件(屏幕,鍵盤等)很難,爲什麼不讓操作系統處理它。 Linux是免費的;-) – lothar 2009-05-21 03:16:25
爲什麼我堅持?那麼,我正在調試硬件,而不是編寫Linux軟件! :P 我需要做的PCI總線重置和修改配置寄存器和。我在Linux低層工作方面做得並不多,但在Windows世界中,奇偶校驗錯誤(PERR#),系統錯誤(SERR#)和PCI總線重置(RESET#)是災難性事件。 – 2009-05-22 02:04:43