Códigos de Salida
Parte de la sección Fundamentos del Journey de Assembly de Coddy — lección 33 de 45.
Cuando tu programa finaliza, envía un número pequeño de vuelta al sistema operativo. Este número se llama código de salida o estado de salida.
Por qué son importantes 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 copia de seguridad podría continuar solo si el comando anterior tuvo éxito.
Los códigos de salida también ayudan con la depuración. Puedes usar diferentes códigos de error para diferentes problemas.
También puedes encadenar programas para que uno se ejecute solo si el anterior tuvo éxito. La 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 | Éxito — todo funcionó |
| 1-255 | Algo salió mal |
Elegir códigos de error:
Puedes usar cualquier número del 1 al 255. Lo que significa cada número depende de ti como programador.
| Código de salida | Lo que podría significar |
|---|---|
| 1 | Error general |
| 2 | Archivo de entrada faltante |
| 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 contendrá cualquier basura que haya quedado en el registro, y tu programa finalizará con un código aleatorio.
Desafío
Escribe un programa completo en ensamblador que finalice con el código de salida 2 (para señalar "file not found").
El código de impresión se proporciona para ti. Solo necesitas añadir la syscall exit.
Pruébalo tú mismo
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; Imprimir el mensaje (proporcionado por el arnés 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"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-64