Script dell'ambiente
Qui di seguito sono documentati gli script dell'ambiente.
I principali sono assemble.ps1
e debug.ps1
, il cui uso è mostrato nelle esercitazioni.
Gli script run-test.ps1
e run-tests.ps1
sono utili per automatizzare i test, il loro uso è del tutto opzionale.
assemble.ps1
PS /mnt/c/reti_logiche/assembler> ./assemble.ps1 mio_programma.s
Questo script assembla un sorgente assembler in un file eseguibile.
Lo script controlla prima che il file passato non sia un eseguibile, invece che un sorgente.
Poi, il sorgente viene assemblato usando gcc ad includendo il sorgente ./files/main.c
, che si occupa di alcune impostazioni del terminale.
debug.ps1
PS /mnt/c/reti_logiche/assembler> ./debug.ps1 mio_programma
Questo script lancia il debugger per un programma.
Lo script controlla prima che il file passato non sia un sorgente, invece che un eseguibile.
Poi, il debugger gdb viene lanciato con il programma dato, includendo le definizioni e comandi iniziali in ./files/gdb_startup
.
Questi si occupano di definire i comandi qquit
e rrun
(non chiedono conferma), creare un breakpoint in _main
e avviare il programma fino a tale breakpoint (così da saltare il codice di setup di ./files/main.c
).
run-test.ps1
PS /mnt/c/reti_logiche/assembler> ./run-test.ps1 mio_programma input.txt output.txt
Lancia un eseguibile usando il contenuto di un file come input, e ne opzionalmente ne stampa l'output su file. Lo script fa ridirezione di input/output, con alcuni controlli. Tutti i caratteri del file di input verranno visti dal programma come se digitati da tastiera, inclusi i caratteri di fine riga.
run-tests.ps1
PS /mnt/c/reti_logiche/assembler> ./run-tests.ps1 mio_programma cartella_test
Testa un eseguibile su una serie di coppie input-output, verificando che l'output sia quello atteso. Stampa riassuntivamente e per ciascun test se è stato passato o meno.
Lo script prende ciascun file di input, con nome nella forma in_*.txt
, ed esegue l'eseguibile con tale input.
Ne salva poi l'output corrispondente nel file out_*.txt
.
Confronta poi out_*.txt
e out_ref_*.txt
: il test è passato se i due file coincidono.
Nel confronto, viene ignorata la differenza fra le sequenze di fine riga \r\n
e \n
.