2009-05-21 18 views
5

Estoy buscando hacer una herramienta de depuración de hardware que se ejecute en la CPU vacía (x86), modo protegido de 32 bits y sin sistema operativo. Debido a limitaciones de tiempo, no escribiré la herramienta en conjunto x86. Me gusta el lenguaje Ada (pero no tengo experiencia con él) y pensé que sería interesante usar Ada en lugar de C para este proyecto.Ada y ensamblaje

Con C, se puede usar un ensamblaje en línea o llamar a subprogramas escritos en ensamblaje para acceder al BIOS para cosas básicas como E/S del teclado o mostrar texto en la pantalla. ¿Ada tiene una capacidad similar? Y si es así, ¿alguien sabe de algún recurso o tutorial para llamar a los métodos de ensamblaje y vincularlos?

+2

¿Por qué insistes en no usar un sistema operativo? Acceder a todo el hardware (pantalla, teclado, etc.) es difícil, ¿por qué no dejar que el sistema operativo se ocupe de ello? Linux es gratis ;-) – lothar

+0

¿Por qué insisto? ¡Bien, estoy depurando hardware, no escribiendo software de Linux! : p Necesito hacer reinicios del bus PCI y modificar los registros de configuración, y. No he hecho mucho con Linux en el trabajo de bajo nivel, pero en el mundo de Windows, el error de paridad (PERR #), los errores del sistema (SERR #) y el reinicio del bus PCI (RESET #) son eventos catastróficos. –

Respuesta

5

Puede usar el código de ensamblaje en línea en Ada. Debe utilizar el paquete System.Machine_Code que proporciona la función (sobrecargada) Asm.

+0

¡Gracias! ¡Eso debería hacer el truco! –

2

El manual de referencia de GNAT tiene una sección en Machine Code Insertions, y si bien es específico de GNAT, uno debería ser capaz de obtener una idea general de cómo funciona, incluso si está utilizando un compilador diferente.

+0

Gracias, me apegaré a GNAT ya que quiero usar herramientas gratuitas. Es un proyecto de hobby después de todo. –