Códigos de Saída
Parte da seção Fundamentos do Journey de Assembly da Coddy. Lição 33 de 45.
Quando seu programa é encerrado, ele envia um pequeno número de volta ao 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:
Os scripts usam códigos de saída para verificar se um programa foi executado com sucesso. Por exemplo, um script de Backup pode continuar somente se o comando anterior tiver sido executado com sucesso.
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 somente se o anterior tiver sido concluído com 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 | Success: tudo funcionou |
| 1-255 | Algo deu errado |
Escolhendo códigos de erro:
Você pode usar qualquer número de 1 a 255. O significado de cada número 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 chamada de sistema de saída. Se esquecer, rdi conterá qualquer lixo que tenha sido deixado no registrador, e seu programa será encerrado com um código aleatório.
Desafio
Escreva um programa completo em assembly que termine com o código de saída 2 (para sinalizar "file not found").
O código de impressão é provided para você. Você só precisa adicionar o exit syscall.
Experimente você mesmo
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; Imprima 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-64Pratique por conta própria: Playground de Assembly