2009-05-21 16 views
5

Sto cercando di creare uno strumento di debug hardware che funzioni sulla nuda CPU (x86), sulla modalità protetta a 32 bit e sul sistema operativo. A causa dei limiti di tempo, non scriverò lo strumento tutto nell'assemblaggio x86. Mi piace la lingua Ada (ma sono inesperto) e ho pensato che potrebbe essere interessante usare Ada piuttosto che C per questo progetto.Ada e assembly

Con C si può usare l'assemblaggio in linea o chiamare i sottoprogrammi scritti in assembly per accedere al BIOS per cose basilari come I/O da tastiera o visualizzazione di testo sullo schermo. Ada ha una capacità simile? E se sì, qualcuno sa di risorse o tutorial per chiamare i metodi di assemblaggio e il collegamento con loro?

+2

Perché insisti a non utilizzare un sistema operativo. L'accesso a tutto l'hardware (schermo, tastiera, ecc.) È difficile, perché non permettere al sistema operativo di gestirlo. Linux è gratuito ;-) – lothar

+0

Perché insisto? Bene, sto eseguendo il debug dell'hardware, non scrivendo software Linux! : p Devo eseguire il reset del bus PCI e modificare i registri di configurazione, e. Non ho lavorato molto con Linux a basso livello di lavoro, ma nel mondo di Windows, errore di parità (PERR #), errori di sistema (SERR #) e reset del bus PCI (RESET #) sono eventi catastrofici. –

risposta

5

È possibile utilizzare il codice assembly inline in Ada. È necessario utilizzare il pacchetto System.Machine_Code che fornisce la funzione (sovraccaricata) Asm.

+0

Grazie! Questo dovrebbe fare il trucco! –

2

Il manuale di riferimento di GNAT ha una sezione su Machine Code Insertions e, sebbene sia specifico per GNAT, si dovrebbe essere in grado di avere un senso generale di come funziona anche se si utilizza un compilatore diverso.

+0

Grazie, mi atterro a GNAT perché voglio utilizzare strumenti gratuiti. Dopo tutto è un progetto per hobby. –