Menu
Coddy logo textTech

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’assembleur comme mov et lea. Ces instructions s’exécutent directement sur le processeur. Mais que faire si vous devez effectuer une tâche que le processeur ne peut pas accomplir 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 syscall ?

Un syscall (appel système) est une demande de votre programme au système d’exploitation. C’est ainsi que vous demandez au système d’exploitation de faire quelque chose pour vous.

Pourquoi vous avez besoin d’appels système :

TâcheLe CPU peut-il le faire seul ?Appel système nécessaire ?
Ajouter deux nombresOuiNon
Déplacer des données entre les registresOuiNon
Afficher du texte à l’écranNonOui
Lire les entrées du clavierNonOui
Quitter un programmeNonOui
Ouvrir un fichierNonOui

Comment fonctionne un syscall :

  1. Tu places un numéro de syscall dans rax (cela 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 exécute la requête
  3. Le système d’exploitation rend le contrôle à votre programme

Analogie :

Imagine qu’un syscall soit comme appeler un service administratif :

ÉtapeAnalogieEn assembleur
1Décider du service dont tu as besoinChoisir le numéro du 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 de l’OS effectue le travail
5Recevoir le résultatLe programme continue

Appels système que vous apprendrez dans ce cours :

Appel systèmeNuméroCe qu’il faitChapitre
exit60Met fin au programmeChapitre 4
write1Affiche du texte à l’écranChapitre 5

L’appel système le plus important pour l’instant : <strong>exit</strong>

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

mov rax, 60    ; syscall number for exit
mov rdi, 0     ; exit code (0 = success)
syscall        ; ask the OS to exit

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