Menu
Coddy logo textTech

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 arquivoNomePara onde os dados vão
0stdinEntrada do teclado (ler dados do usuário)
1stdoutSaída da tela (saída normal do programa)
2stderrSaí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ê usarResultado
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úmeroO kernel não o reconhece — a syscall falha
challenge icon

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
    syscall
quiz iconTeste seus conhecimentos

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