Menu
CoddyTech

Qu'est-ce qu'un Syscall ?

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

Vous avez écrit des instructions d’assemblage comme mov et lea. Ces instructions s’exécutent directement sur le processeur. Mais que faire si vous devez effectuer une opération que le processeur ne peut pas réaliser seul, comme afficher quelque chose à l’écran, lire au clavier ou quitter un programme ?

Pour ces tâches, vous avez besoin du système d’exploitation (Linux, dans ce cours).

Qu’est-ce qu’un appel système ?

Un syscall (appel système) est une requête de votre programme au système d’exploitation. C’est ainsi que vous demandez au système d’exploitation d’effectuer une action pour vous.

Pourquoi vous avez besoin d’appels système :

TâcheLe processeur peut-il le faire seul ?Faut-il un appel système ?
Add two numbersYesNo
Move data between registersYesNo
Print text to screenNoYes
Read keyboard inputNoYes
Exit a programNoYes
Open a fileNoYes

Fonctionnement d’un appel système :

  1. Tu places un numéro d’appel système dans rax (indique au système d’exploitation ce que tu veux)
  2. Tu places les arguments dans d’autres registres (rdi, rsi, rdx, etc.)
  3. Tu exécutes l’instruction syscall
  1. Le processeur passe au noyau du système d’exploitation
  2. Le système d’exploitation effectue la requête
  3. Le système d’exploitation rend le contrôle à votre programme

Analogie :

Imagine qu’un appel système (syscall) soit comme un appel à un service administratif :

ÉtapeAnalogieEn assembleur
1Décider du service dont tu as besoinChoisir le numéro de syscall (le placer dans rax)
2Remplir les formulairesPlacer les arguments dans les registres
3Soumettre la demandeExécuter syscall
4Le service administratif traite la demandeLe noyau du système d’exploitation effectue le travail
5Récupérer le résultatLe programme reprend son exécution

Appels système que vous apprendrez dans ce cours :

Appel systèmeNuméroFonctionChapitre
exit60Termine le programmeChapitre 4
write1Affiche du texte à l’écranChapitre 5

L’appel système le plus important pour l’instant : exit

Sans exit, ton programme continuerait à s’exécuter indéfiniment ou planterait. Chaque programme que tu écris doit se terminer par un appel système exit.

mov rax, 60    ; numéro d'appel système pour exit
mov rdi, 0     ; code de sortie (0 = succès)
syscall        ; demande au système d'exploitation de quitter

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

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