File Descriptor (rdi)
Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 36 de 45.
Na lição anterior, você usou mov rdi, 1 como parte da syscall write. Esse número 1 é chamado de descritor de arquivo.
Um descritor de arquivo é um número que diz ao sistema operacional onde enviar os dados.
Os três descritores de arquivo padrão no Linux:
| Descritor de arquivo | Nome | Para onde os dados vão |
|---|---|---|
| 0 | stdin | Entrada do teclado (ler dados do usuário) |
| 1 | stdout | Saída da tela (saída normal do programa) |
| 2 | stderr | Saída da tela (mensagens de erro) |
Por que ter duas saídas para a tela?
A saída normal (stdout) e a saída de erro (stderr) vão para a mesma tela, mas são tratadas separadamente. Isso permite que você:
- Redirecione a saída normal para um arquivo enquanto ainda vê os erros na tela
- Mostre erros mesmo quando a saída normal estiver oculta
Para imprimir neste curso:
Você sempre usará o descritor de arquivo 1 (stdout) para imprimir mensagens. Você ainda não precisa do stderr.
Exemplo:
mov rdi, 1 ; enviar saída para stdout (a tela)O que acontece se você usar o descritor de arquivo errado?
| Se você usar | Resultado |
|---|---|
| 0 (stdin) | A syscall write espera entrada, não saída — falhará ou não fará nada |
| 2 (stderr) | Funciona como o stdout (imprime na tela), mas é destinado a erros |
| Qualquer outro número | O kernel não o reconhece — a syscall falha |
Desafio
Você recebeu uma string chamada message com o valor 'OK' seguido por uma nova linha. Escreva a linha de código que define o descritor de arquivo para imprimir na tela (stdout). Escreva apenas a instrução mov para rdi.
Experimente você mesmo
section .data
message db 'OK', 0x0a
msgLen equ $ - message
section .text
global _start
_start:
; O estudante define o descritor de arquivo aqui
%include "solution.asm"
mov rax, 1
; rdi já deve estar definido pelo estudante
mov rsi, message
mov rdx, msgLen
syscall
mov rax, 60
mov rdi, 0
syscallEsta 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