Menu
Coddy logo textTech

Descripteur de fichier (rdi)

Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 36 sur 45.

Dans la leçon précédente, vous avez utilisé mov rdi, 1 dans le cadre de l’appel système write. Ce nombre 1 est appelé un file descriptor.

Un file descriptor est un nombre qui indique au système d’exploitation envoyer les données.

Les trois descripteurs de fichiers standard sous Linux :

Descripteur de fichierNomDestination des données
0stdinEntrée clavier (lire les données de l’utilisateur)
1stdoutSortie écran (sortie normale du programme)
2stderrSortie écran (messages d’erreur)

Pourquoi deux sorties pour screen ?

La sortie normale (stdout) et la sortie d’erreur (stderr) vont vers le même screen, mais elles sont traitées séparément. Cela vous permet de :

  • Rediriger la sortie normale vers un fichier tout en continuant à voir les erreurs sur le screen
  • Afficher les erreurs même lorsque la sortie normale est masquée

Pour l’affichage dans ce cours :

Tu utiliseras toujours le descripteur de fichier 1 (stdout) pour afficher des messages. Tu n’as pas encore besoin de stderr.

Exemple :

mov rdi, 1      ; envoyer la sortie vers stdout (l'écran)

Que se passe-t-il si vous utilisez le mauvais descripteur de fichier ?

Si vous utilisezRésultat
0 (stdin)L’appel système write attend une entrée, pas une sortie : il échouera ou ne fera rien
2 (stderr)Fonctionne comme stdout (affiche à l’écran), mais est destiné aux erreurs
Tout autre nombreLe noyau ne le reconnaît pas : l’appel système échoue
challenge icon

Défi

On vous donne une chaîne appelée message avec la valeur 'OK' suivie d’un saut de ligne. Écrivez la ligne de code qui définit le descripteur de fichier pour afficher à l’écran (stdout). Écrivez uniquement l’instruction mov pour rdi.

Essayez vous-même

section .data
    message db 'OK', 0x0a
    msgLen equ $ - message

section .text
    global _start

_start:
    ; L'étudiant définit le descripteur de fichier ici
    %include "solution.asm"
    
    mov rax, 1
    ; rdi devrait déjà être défini par l'étudiant
    mov rsi, message
    mov rdx, msgLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Playground Assembly