2012-03-02 5 views
14

Sembra che i test unitari siano diventati di moda in questi giorni e so che molti di voi penseranno: "Bene, perché non usare già il linguaggio X con il framework Y?" Ma propongo questa idea più come prova del concetto, o per nostalgico ricordo dei miei primi anni con la programmazione per computer.Quali framework di test unitari sono disponibili per l'assembler x86?

che sto vale a dire lavorare su BSD in esecuzione su x86 con NASM, e hanno brulè rispetto all'uso di scripting di shell con aspettarsi (1) per fare test di unità, ma volevo sapere in anticipo:

Cosa unit testing i framework sono disponibili per le applicazioni scritte nell'assemblaggio x86?

risposta

3

Se le routine di assemblatore dispongono o possono essere fornite un'interfaccia "C", è possibile utilizzare qualsiasi framework di test dell'unità C/C++.

Si dovrebbe spostare la maggior parte della propria applicazione in una libreria che può essere chiamata da programmi "C" (cioè una struttura di test). Per costruire finalmente la tua applicazione scrivi un front-end assemblatore che chiama la tua nuova libreria.

+0

Onestamente, questa è una pratica generalmente eccellente e abbastanza portatile. Quindi potrebbe funzionare bene considerando la piattaforma Unix con cui lavoro. Ma l'applicazione avrebbe comunque sostenuto il sovraccarico di C e speravo di avere meno dipendenze possibili. –

+0

È possibile organizzare il codice in modo che il codice assembler si trovi in ​​una o più librerie, i wrapper 'C' in un set di librerie parallele richiamate dai test e l'applicazione richiami direttamente il codice assembler. – quamrana

+0

@DwightSpencer Dovresti disaccoppiare le dipendenze del modulo (anche quelle all'interno dell'applicazione) comunque. Il risultato saranno frammenti di codice che sono indipendenti dal chiamante (tranne che per convenzioni di chiamata incompatibili). Il collegamento dinamico potrebbe anche farti un grande favore con questi ... – Powerslave

1

IMHO La nozione di test delle unità non è applicabile ai linguaggi di basso livello come gli assemblatori. Il test unitario si associa alla funzionalità dell'unità di test di un metodo, classe, procedura. A mio avviso, tali cose non esistono nel codice assembly - ovviamente, è possibile dichiarare procedure in alcuni assemblatori (era possibile in TASM e MASM), ma non sono qualcosa che esiste nel codice macchina.

Tuttavia, penso che possiamo ancora prendere in considerazione la verifica automatica del codice assembly. Personalmente, non ho sentito parlare di nessun quadro che possa permetterlo.

+0

Sembra anche che yasm/nasm abbia la stessa capacità tasm/masm attraverso l'uso di macro; Ho messo insieme un'implementazione di stdlib per quelli per gli assemblatori menzionati. Ma sono d'accordo sul fatto che ci dovrebbe essere un test più automatico per il codice assembly. Specialmente quello vicino al metallo nudo. –

+0

Bene, la gestione della struttura in modalità ideale, ad esempio, è praticamente un oggetto e gli oggetti, a basso livello, sono comunque solo indirette, quindi è praticamente possibile avere tali strutture. Non ne ho mai sentito parlare. La buona notizia è che essere compatibile con C/C++ dipende dal programmatore, quindi alla fine della giornata un lib di C++ semplicemente farà il lavoro. – Powerslave