Version 7 (modified by 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()
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