Trente petits pas à l’intérieur d’un ordinateur

Le cours OpenKernel

Comprenez une idée, essayez-la dans un processeur visible et résolvez un défi vérifié par la machine. Commencez avec trois instructions et terminez avec vos propres petits programmes.

Sans compte ni installation. Une leçon est terminée seulement quand votre programme réussit tous les cas du défi. Progression et badges restent dans ce navigateur.

Commencer la leçon 1 → Ouvrir le laboratoire gratuit

Votre progression

La progression est chargée dans votre navigateur.

Terminez une unité pour obtenir son badge. Les badges enregistrent les défis vérifiés, pas les visites.

La navigation privée, l’effacement des données du site ou un autre appareil peuvent supprimer votre suivi local. Vous pouvez suivre les leçons dans l’ordre de votre choix.

Unité 1 · environ 20 minutes

Découvrir la machine

Expliquez le cycle lecture/exécution, les registres, PC, la sortie et l’arrêt.

0 défis vérifiés sur 3 terminés

  1. Votre premier programme en émojis · 5 minutes

    Chargez un nombre dans le processeur, affichez-le et arrêtez le programme.

  2. Comprendre les registres · 8 minutes

    Utilisez les huit espaces de travail rapides sans perdre une valeur.

  3. Suivre le compteur ordinal · 7 minutes

    Lisez une trace et distinguez les lignes du code source des adresses d’instructions.

Unité 2 · environ 28 minutes

Calculs et entrées

Construisez des calculs entiers avec des entrées sauvegardées et des cas de test.

0 défis vérifiés sur 3 terminés

  1. Calculs avec des émojis · 9 minutes

    Enchaînez addition, soustraction et multiplication dans le bon ordre.

  2. Division et restes · 9 minutes

    Expliquez la division arrondie vers le bas et le reste signé, même pour les nombres négatifs.

  3. Une calculatrice à deux entrées · 10 minutes

    Construisez une calculatrice réutilisable plutôt qu’une réponse fixe.

Unité 3 · environ 28 minutes

La mémoire en octets

Distinguez les valeurs des adresses et lisez ou écrivez des octets en mémoire.

0 défis vérifiés sur 3 terminés

  1. La mémoire : le carnet de l’ordinateur · 10 minutes

    Enregistrez un octet et relisez-le réellement après avoir remplacé R0.

  2. Des adresses dans les registres · 9 minutes

    Utilisez une adresse comme donnée et consultez une table.

  3. Octets et limites · 9 minutes

    Découvrez pourquoi la mémoire réduit les valeurs mais pas les registres.

Unité 4 · environ 29 minutes

Décisions et indicateurs

Exprimez des décisions avec des comparaisons, des restes et des chemins nommés.

0 défis vérifiés sur 3 terminés

  1. Logique conditionnelle : prendre une décision · 10 minutes

    Comparez des valeurs puis choisissez un chemin selon un indicateur mémorisé.

  2. Pair ou impair · 9 minutes

    Classez une entrée avec un reste et un branchement.

  3. Une décision fondée sur la mémoire · 10 minutes

    Prenez une décision à partir d’une donnée enregistrée et conservez le résultat.

Unité 5 · environ 34 minutes

Répétitions et compteurs

Utilisez des boucles bornées, le cas zéro, des compteurs et des accumulateurs.

0 défis vérifiés sur 3 terminés

  1. Les boucles : répéter des actions · 10 minutes

    Associez LOOP à RETURN et gérez correctement zéro répétition.

  2. Construire un compteur · 12 minutes

    Affichez de 1 à 10, puis généralisez le comptage.

  3. La somme de un à N · 12 minutes

    Gardez l’accumulateur séparé du compteur de boucle.

Unité 6 · environ 42 minutes

Des algorithmes avec un état

Décrivez et examinez les invariants de factorielle, de Fibonacci et de copie inversée.

0 défis vérifiés sur 3 terminés

  1. Factorielle et invariants de boucle · 12 minutes

    Utilisez un accumulateur multiplicatif et expliquez pourquoi 0! vaut 1.

  2. La suite de Fibonacci · 15 minutes

    Conservez deux valeurs précédentes et actualisez-les dans un ordre sûr.

  3. Inverser un tampon mémoire · 15 minutes

    Copiez un tampon à l’envers avec des pointeurs source et destination.

Unité 7 · environ 39 minutes

La pile et les fonctions

Utilisez des données dernier entré/premier sorti, des cadres d’appel et des conventions de sauvegarde/restauration.

0 défis vérifiés sur 3 terminés

  1. La pile : dernier entré, premier sorti · 12 minutes

    Sauvegardez des valeurs sur la pile de données et récupérez-les dans l’ordre inverse.

  2. Appeler un sous-programme · 12 minutes

    Réutilisez du code et revenez à l’instruction située après CALL.

  3. Préserver l’état de l’appelant · 15 minutes

    Utilisez une convention de sauvegarde et restauration quand une fonction a besoin d’un espace temporaire.

Unité 8 · environ 39 minutes

Bits et représentation

Sélectionnez et basculez des bits ; expliquez le fonctionnement des entiers signés sur 32 bits.

0 défis vérifiés sur 3 terminés

  1. Masques de bits et indicateurs · 12 minutes

    Sélectionnez des bits avec AND et activez-les avec OR.

  2. Basculer des bits · 12 minutes

    Utilisez la transformation réversible de XOR pour modifier un réglage enregistré.

  3. Bits signés et valeur maximale · 15 minutes

    Comprenez NOT et testez une différence signée avec un masque de signe.

Unité 9 · environ 45 minutes

Ordonnancement, cœurs et événements

Distinguez politique d’ordonnancement, répartition du travail et restauration d’état par un gestionnaire.

0 défis vérifiés sur 3 terminés

  1. Ordonnancement coopératif · 15 minutes

    Faites alterner des tâches et distinguez la politique d’exécution des instructions du processeur.

  2. Répartir le travail entre des cœurs · 15 minutes

    Divisez des travaux indépendants et combinez leurs résultats.

  3. Interruptions et gestionnaires · 15 minutes

    Traitez un événement et restaurez la valeur du programme interrompu.

Unité 10 · environ 56 minutes

Construire de petits programmes

Combinez les instructions pour créer un jeu, un utilitaire de tampon et un répartiteur de travaux.

0 défis vérifiés sur 3 terminés

  1. Un petit jeu de cible · 18 minutes

    Construisez un jeu de trois tours avec un état enregistré et un score.

  2. Un utilitaire de tampon utilisant la pile · 18 minutes

    Combinez entrées, boucles, pile et stockage indexé.

  3. Votre propre mini système d’exploitation · 20 minutes

    Répartissez des travaux en attente vers des services réutilisables et enregistrez les résultats.

Bienvenue aux nouveaux programmeurs

Trois guides pour débuter

Suivez une petite recette et prévoyez sa sortie. Ouvrez ce programme exact dans le laboratoire, puis faites le défi de sa leçon pour vérifier votre propre solution.

Votre premier programme

Construisez un programme qui affiche 42, puis suivez sa trace.

  1. Insérez 📥 LOAD avec la palette.
  2. Ajoutez le nombre 42 après LOAD.
  3. Ajoutez 🖨️ PRINT sur la ligne suivante.
  4. Ajoutez ⏹️ HALT sur la dernière ligne.
  5. Exécutez le programme et vérifiez que la console affiche bien 42.
  6. Avancez pas à pas et observez R0, PC et la sortie.
📥 42
🖨️
⏹️

Sortie attendue: 42

Ouvrir le guide dans le laboratoire →

Faire le défi de la leçon →

Calculs avec des émojis

Calculez 10 + 5 et observez les changements de l’accumulateur.

  1. Insérez 📥 LOAD.
  2. Chargez le nombre 10.
  3. Ajoutez ➕ ADD sur la ligne suivante.
  4. Utilisez 5 comme opérande de ADD.
  5. Ajoutez 🖨️ PRINT pour afficher le résultat.
  6. Ajoutez ⏹️ HALT pour arrêter le programme.
  7. Exécutez le programme et vérifiez que la console affiche 15.
  8. Reprenez pas à pas et expliquez pourquoi PRINT reçoit la somme.
📥 10
➕ 5
🖨️
⏹️

Sortie attendue: 15

Ouvrir le guide dans le laboratoire →

Faire le défi de la leçon →

Une boucle de compte à rebours

Comptez de cinq à un avec une sortie nommée par une étiquette.

  1. Insérez 📥 LOAD.
  2. Fixez le compteur initial à 5.
  3. Nommez l’instruction PRINT avec l’étiquette again: pour donner une destination claire au saut.
  4. Ajoutez ➖ SUB après l’affichage.
  5. Soustrayez 1 à chaque passage.
  6. Ajoutez ❓ JUMP_IF_ZERO immédiatement après SUB.
  7. Utilisez l’étiquette done comme destination de sortie.
  8. Ajoutez ⏭️ JUMP pour le chemin qui continue le compte à rebours.
  9. Utilisez l’étiquette again pour revenir à PRINT.
  10. Ajoutez done: ⏹️ HALT après la boucle.
  11. Exécutez le programme et vérifiez la sortie réelle : 5, 4, 3, 2, 1.
  12. Suivez la dernière soustraction : l’indicateur zéro devient vrai et l’exécution atteint HALT.
📥 5
again: 🖨️
➖ 1
❓ done
⏭️ again
done: ⏹️

Sortie attendue: 5, 4, 3, 2, 1

Ouvrir le guide dans le laboratoire →

Faire le défi de la leçon →