Changes between Version 6 and Version 7 of Archi-1-TP9
- Timestamp:
- Nov 11, 2020, 10:27:55 AM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP9
v6 v7 1 1 ||[wiki:description_dernieres_seances retour au descriptif des séances "système"]|| 2 2 [[PageOutline]] 3 = Boot et premier programme en mode kernel 3 {{{#!html 4 <h1> <font size="+2"> Boot et premier programme en mode kernel 5 </font></h1> 6 }}} 4 7 5 # 1. Premier programme en assembleur6 8 7 ## Objectif général8 9 9 Il s'agit d'afficher un message sur le terminal avec un programme en assembleur. 10 = 1. Premier programme en assembleur dans la seule section de boot 10 11 11 ## Compétences acquises 12 == Codes 13 14 {{{#!c 15 .section .boot,"ax",@progbits // def. of a new section: .boot (see https://bit.ly/3gzKWob) 16 // flags "ax": a -> allocated means section put in memory 17 // x -> section contains instructions 18 // type @progbits: contains somethings (not just space) 19 boot: 20 la $26, kinit // get address of kinit() function 21 j $26 // goto kinit() 22 }}} 23 24 == Objectif 25 26 27 - Affichage d'un message sur le terminal avec un programme en assembleur. 28 29 30 == Compétences acquises 31 12 32 13 33 - Savoir produire un exécutable à partir d'un code en assembleur. 14 34 - Savoir comment afficher un caractère sur un terminal. 15 35 16 ## Questions 36 37 == Questions 38 17 39 18 40 - Dans quel fichier se trouve la description de l'espace d'adressage du MIPS ? 41 - Dans quel fichier se trouve le code de boot et pourquoi l'avoir nommé ainsi ? 19 42 - A quelle adresse démarre le MIPS ? 20 43 - Que produit le compilateur C quand on utilise l'option -c ? 21 44 - Que fait l'éditeur de liens ? 22 45 - De quels fichiers a besoin l'éditeur de liens pour fonctionner ? 23 - Que fait l'instruction `mtc0 $0, $12` ? Pourquoi est-ce nécessaire ? 24 - Dans quelle section se trouve le message hello ? 25 - Comment connait-on l'adresse du registre de sortie du contrôleur de terminal TTY ? 46 - Dans quelle section se trouve le code de boot pour le compilateur ? 47 - Dans quelle section se trouve le message hello pour le compilateur ? 48 - Dans quelle section se trouve le code de boot dans le code exécutable ? 49 - Dans quelle région de la mémoire le code de boot est placé ? 50 - Comment connaît-on l'adresse du registre de sortie du contrôleur de terminal TTY ? 26 51 - Comment sait-on que le message est fini et que le programme doit s'arrêter ? 27 52 - Pourquoi terminer le programme par un `dead: j dead` ? 53 54 55 56 = 2. Saut dans la fonction kinit() du noyau 57 58 59 60 == Objectif de l'étape 61 62 63 - Affichage d'un message depuis le code du noyau toujours en assembleur 64 65 66 == Compétences acquises 67 68 - Comment aller à une adresse définie dans un autre fichier 69 - Création d'une section dans le code objet produit par le compilateur 70 71 == Questions 72 73 - Quel est le nom de la directive assembleur permettant de déclarer une section