wiki:Archi-1-TP9

Version 8 (modified by franck, 4 years ago) (diff)

--

retour au descriptif des séances "système"?

Boot et premier programme en mode kernel

1. Premier programme en assembleur dans la seule section de boot

Codes

.section .boot,"ax",@progbits       // def. of a new section: .boot (see https://bit.ly/3gzKWob)
                                    // flags "ax":     a -> allocated means section put in memory
                                    //                 x -> section contains instructions
                                    // type @progbits: contains somethings (not just space)
boot:                                   
    la      $26,    kinit           // get address of kinit() function
    j       $26                     // goto kinit()

tp2_hcpu.s

Objectif

  • Affichage d'un message sur le terminal avec un programme en assembleur.

Compétences acquises

  • Savoir produire un exécutable à partir d'un code en assembleur.
  • Savoir comment afficher un caractère sur un terminal.

Questions

  • Dans quel fichier se trouve la description de l'espace d'adressage du MIPS ?
  • Dans quel fichier se trouve le code de boot et pourquoi l'avoir nommé ainsi ?
  • A quelle adresse démarre le MIPS ?
  • Que produit le compilateur C quand on utilise l'option -c ?
  • Que fait l'éditeur de liens ?
  • De quels fichiers a besoin l'éditeur de liens pour fonctionner ?
  • Dans quelle section se trouve le code de boot pour le compilateur ?
  • Dans quelle section se trouve le message hello pour le compilateur ?
  • Dans quelle section se trouve le code de boot dans le code exécutable ?
  • Dans quelle région de la mémoire le code de boot est placé ?
  • Comment connaît-on l'adresse du registre de sortie du contrôleur de terminal TTY ?
  • Comment sait-on que le message est fini et que le programme doit s'arrêter ?
  • Pourquoi terminer le programme par un dead: j dead ?

2. Saut dans la fonction kinit() du noyau

Objectif de l'étape

  • Affichage d'un message depuis le code du noyau toujours en assembleur

Compétences acquises

  • Comment aller à une adresse définie dans un autre fichier
  • Création d'une section dans le code objet produit par le compilateur

Questions

  • Quel est le nom de la directive assembleur permettant de déclarer une section