Exit-Codes
Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy — Lektion 33 von 45.
Wenn Ihr Programm beendet wird, sendet es eine kleine Zahl an das Betriebssystem zurück. Diese Zahl wird als Exit-Code oder Exit-Status bezeichnet.
Warum Exit-Codes wichtig sind:
Skripte verwenden Exit-Codes, um zu prüfen, ob ein Programm erfolgreich war. Zum Beispiel könnte ein Backup-Skript nur dann fortfahren, wenn der vorherige Befehl erfolgreich war.
Exit-Codes helfen auch beim Debugging. Sie können verschiedene Fehlercodes für verschiedene Probleme verwenden.
Sie können Programme auch miteinander verketten, sodass ein Programm nur ausgeführt wird, wenn das vorherige erfolgreich war. Die Shell prüft den Exit-Code, bevor sie den nächsten Befehl ausführt.
Die Regeln für Exit-Codes:
| Exit-Code | Bedeutung |
|---|---|
| 0 | Erfolg — alles hat funktioniert |
| 1-255 | Etwas ist schiefgelaufen |
Fehlercodes wählen:
Sie können jede Zahl von 1 bis 255 verwenden. Was jede Zahl bedeutet, liegt bei Ihnen als Programmierer.
| Exit-Code | Mögliche Bedeutung |
|---|---|
| 1 | Allgemeiner Fehler |
| 2 | Eingabedatei fehlt |
| 3 | Zugriff verweigert |
| 4 | Netzwerkfehler |
Was passiert, wenn Sie keinen Exit-Code festlegen?
Sie müssen rdi immer vor dem Exit-Systemaufruf setzen. Wenn Sie dies vergessen, enthält rdi den Müll, der im Register übrig geblieben ist, und Ihr Programm wird mit einem zufälligen Code beendet.
Aufgabe
Schreiben Sie ein vollständiges Assembly-Programm, das mit dem Exit-Code 2 beendet wird (um "file not found" zu signalisieren).
Der Print-Code wird Ihnen zur Verfügung gestellt. Sie müssen nur den exit-Syscall hinzufügen.
Probier es selbst
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; Nachricht ausgeben (bereitgestellt durch Testumgebung)
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
; Hier kommt der Code des Schülers
%include "solution.asm"Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Die Maschine
Was ist eine CPUSpeicherRegister vs. SpeicherWie Befehle funktionierenZwei-Dateien-MusterDie x86-64 Architektur