Códigos de Saída
Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 33 de 45.
Quando o seu programa termina, ele envia um pequeno número de volta para o sistema operacional. Esse número é chamado de código de saída ou status de saída.
Por que os códigos de saída são importantes:
Scripts usam códigos de saída para verificar se um programa foi bem-sucedido. Por exemplo, um script de backup pode continuar apenas se o comando anterior tiver sido bem-sucedido.
Códigos de saída também ajudam na depuração. Você pode usar códigos de erro diferentes para problemas diferentes.
Você também pode encadear programas para que um programa seja executado apenas se o anterior tiver tido sucesso. O shell verifica o código de saída antes de executar o próximo comando.
As regras dos códigos de saída:
| Código de saída | Significado |
|---|---|
| 0 | Sucesso — tudo funcionou |
| 1-255 | Algo deu errado |
Escolhendo códigos de erro:
Você pode usar qualquer número de 1 a 255. O que cada número significa depende de você como programador.
| Código de saída | O que você pode querer dizer |
|---|---|
| 1 | Erro geral |
| 2 | Arquivo de entrada ausente |
| 3 | Permissão negada |
| 4 | Erro de rede |
O que acontece se você não definir um código de saída?
Você deve sempre definir rdi antes da syscall exit. Se você esquecer, rdi conterá qualquer lixo que tenha restado no registrador, e seu programa sairá com um código aleatório.
Desafio
Escreva um programa assembly completo que saia com o código de saída 2 (para sinalizar "file not found").
O código de impressão é fornecido para você. Você só precisa adicionar a syscall de saída.
Experimente você mesmo
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; Imprime a mensagem (fornecida pelo test harness)
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
; O código do aluno vai aqui
%include "solution.asm"Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1A Máquina
O que é CPUMemóriaRegistradores vs MemóriaComo as instruções funcionamPadrão de Dois ArquivosA Arquitetura x86-64