Códigos de Salida
Parte de la sección Fundamentos del Journey de Assembly de Coddy. Lección 33 de 45.
Cuando tu programa termina, envía un número pequeño al sistema operativo. Este número se denomina código de salida o estado de salida.
Por qué importan los códigos de salida:
Los scripts utilizan códigos de salida para comprobar si un programa se ejecutó correctamente. Por ejemplo, un script de Backup podría continuar solo si el comando anterior se ejecutó correctamente.
Los códigos de salida también ayudan con la depuración. Puedes usar distintos códigos de error para distintos problemas.
También puedes encadenar programas para que un programa se ejecute solo si el anterior tuvo éxito. El shell comprueba el código de salida antes de ejecutar el siguiente comando.
Las reglas de los códigos de salida:
| Código de salida | Significado |
|---|---|
| 0 | Success: todo funcionó |
| 1-255 | Algo salió mal |
Elección de códigos de error:
Puedes usar cualquier número del 1 al 255. El significado de cada número depende de ti como programador.
| Código de salida | Lo que podrías querer decir |
|---|---|
| 1 | Error general |
| 2 | Falta el archivo de entrada |
| 3 | Permiso denegado |
| 4 | Error de red |
¿Qué sucede si no estableces un código de salida?
Siempre debes establecer rdi antes de la llamada al sistema exit. Si lo olvidas, rdi contiene cualquier basura que haya quedado en el registro, y tu programa terminará con un código aleatorio.
Desafío
Escribe un programa completo en assembly que termine con el código de salida 2 (para indicar "file not found").
El código de impresión se proporciona. Solo necesitas añadir el syscall de salida.
Pruébalo tú mismo
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; Imprime el mensaje (proporcionado por el test harness)
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
; El código del estudiante va aquí
%include "solution.asm"Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1La máquina
¿Qué es la CPU?MemoriaRegistros vs. MemoriaCómo funcionan las instruccionesPatrón de dos archivosLa arquitectura x86-64Practica por tu cuenta: Playground de Assembly