Exit-Codes
Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy. Lektion 33 von 45.
Wenn dein Programm beendet wird, sendet es eine kleine Zahl an das Betriebssystem zurück. Diese Zahl wird Exit-Code oder Exit-Status genannt.
Warum Exit-Codes wichtig sind:
Skripte verwenden Exit-Codes, um zu prüfen, ob ein Programm erfolgreich ausgeführt wurde. Beispielsweise fährt ein Sicherungsskript möglicherweise nur fort, wenn der vorherige Befehl erfolgreich war.
Exit-Codes helfen auch beim Debuggen. Du kannst für verschiedene Probleme unterschiedliche Fehlercodes verwenden.
Du kannst 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 auswählen:
Du kannst jede Zahl von 1 bis 255 verwenden. Was die einzelnen Zahlen bedeuten, entscheidest du als Programmierer.
| Beendigungscode | Was du meinen könntest |
|---|---|
| 1 | Allgemeiner Fehler |
| 2 | Eingabedatei fehlt |
| 3 | Zugriff verweigert |
| 4 | Netzwerkfehler |
Was passiert, wenn du keinen Exit-Code festlegst?
Du musst rdi immer vor dem Exit-Systemaufruf setzen. Wenn du das vergisst, enthält rdi irgendwelche Restwerte im Register, und dein Programm wird mit einem zufälligen Code beendet.
Aufgabe
Schreibe ein vollständiges Assembly-Programm, das mit dem Exitcode 2 beendet wird (um „file not found“ zu signalisieren).
Der Ausgabecode wird dir bereitgestellt. Du musst nur den Exit-Systemaufruf hinzufügen.
Probier es selbst
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; Gib die Nachricht aus (vom Testsystem bereitgestellt)
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
; Hier kommt der Code der Lernenden hin
%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Übe selbstständig: Assembly-Playground