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 chamada de sistema write. Esse número 1 é chamado de descritor de arquivo.

Um descritor de arquivo é um número que informa ao sistema operacional para 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 na tela (saída normal do programa)
2stderrSaída na 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 continua vendo os erros na tela
  • Mostre os 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 de stderr.

Exemplo:

mov rdi, 1      ; enviar a saída para stdout (a tela)

O que acontece se você usar o descritor de arquivo errado?

Se você usarResultado
0 (stdin)A syscall de escrita espera entrada, não saída: falhará ou não fará nada
2 (stderr)Funciona como stdout (imprime na tela), mas destina-se a erros
Qualquer outro númeroO kernel não o reconhece: a syscall falha
challenge icon

Desafio

Você recebe 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:
    ; Estudante define o descritor de arquivo aqui
    %include "solution.asm"
    
    mov rax, 1
    ; rdi já deve ter sido 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

Pratique por conta própria: Playground de Assembly