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 è terminato correttamente. 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 |
Scelta dei codici di errore:
Puoi usare qualsiasi numero da 1 a 255. Sta a te, come programmatore, decidere cosa significa ciascun numero.
| Codice di uscita | Cosa potresti intendere |
|---|---|
| 1 | Errore generico |
| 2 | File di input mancante |
| 3 | Autorizzazione negata |
| 4 | Errore di rete |
Che cosa succede se non imposti un codice di uscita?
Devi sempre impostare rdi prima della syscall di uscita. Se te ne dimentichi, rdi contiene qualsiasi valore casuale sia rimasto nel registro e il programma terminerà con un codice casuale.
Sfida
Scrivi un programma assembly completo che termina con codice di uscita 2 (per segnalare "file not found").
Il codice di stampa ti viene fornito. Devi solo aggiungere la syscall di uscita.
Provalo tu
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; Imprime el mensaje (proporcionado por el entorno de pruebas)
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
; El código del estudiante va aquí
%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