Codici di uscita
Fa parte della sezione Fondamenti del percorso Assembly di Coddy. Lezione 33 di 45.
Quando il tuo programma termina, invia un piccolo numero al sistema operativo. Questo numero è chiamato codice di uscita o stato di uscita.
Perché i codici di uscita sono importanti:
Gli script usano i codici di uscita per verificare se un programma è stato eseguito correttamente. Per esempio, uno script di backup potrebbe continuare solo se il comando precedente è stato eseguito correttamente.
Anche i codici di uscita aiutano a eseguire il debug. Puoi usare codici di errore diversi per problemi diversi.
Puoi anche concatenare i programmi in modo che un programma venga eseguito solo se quello precedente è riuscito. La shell controlla il codice di uscita prima di eseguire il comando successivo.
Le regole dei codici di uscita:
| Codice di uscita | Significato |
|---|---|
| 0 | Successo: tutto ha funzionato |
| 1-255 | Qualcosa è andato storto |
Scegliere i codici di errore:
Puoi usare qualsiasi numero da 1 a 255. Sta a te, in qualità di programmatore, decidere cosa significa ciascun numero.
| Codice di uscita | Cosa potresti intendere |
|---|---|
| 1 | Errore generale |
| 2 | File di input mancante |
| 3 | Autorizzazione negata |
| 4 | Errore di rete |
Cosa succede se non imposti un codice di uscita?
Devi sempre impostare rdi prima della chiamata di sistema di uscita. Se te ne dimentichi, rdi contiene qualunque dato casuale sia rimasto nel registro e il programma terminerà con un codice casuale.
Sfida
Scrivi un programma assembly completo che termini con il codice di uscita 2 (per segnalare «file not found»).
Il codice di stampa è già fornito. Devi solo aggiungere la chiamata di sistema per l'uscita.
Provalo tu
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; Stampa il messaggio (fornito dall'ambiente di test)
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
; Il codice dello studente va qui
%include "solution.asm"Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1La macchina
Che cos’è la CPUMemoriaRegistri vs memoriaCome funzionano le istruzioniSchema a due fileL’architettura x86-642Sistemi numerici
Perché il binario?Numeri binariDa decimale a binarioPerché l'esadecimale?Da esadecimale a decimaleDa decimale a esadecimaleASCII ed esadecimale5Chiamata di sistema di uscita
Cos'è una chiamata di sistema?Chiamata di sistema di uscita (60)Codici di uscitaRiepilogo: uscita correttaEsercitati da solo: Playground Assembly