Version 9 (modified by 4 years ago) (diff) | ,
---|
retour au descriptif des séances "système"? |
Boot et premier programme en mode kernel
Préambule
Le but de ce TD est de préparer le travail que vous devez faire dans le TP. Vous allez voir
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 le code du noyau en assembleur
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