Changes between Version 6 and Version 7 of Archi-1-TP9


Ignore:
Timestamp:
Nov 11, 2020, 10:27:55 AM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v6 v7  
    11||[wiki:description_dernieres_seances retour au descriptif des séances "système"]||
    22[[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}}}
    47
    5 # 1. Premier programme en assembleur
    68
    7 ## Objectif général
    89
    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
    1011
    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)
     19boot:                                   
     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
    1232
    1333- Savoir produire un exécutable à partir d'un code en assembleur.
    1434- Savoir comment afficher un caractère sur un terminal.
    1535
    16 ## Questions
     36
     37== Questions
     38
    1739
    1840- 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 ?
    1942- A quelle adresse démarre le MIPS ?
    2043- Que produit le compilateur C quand on utilise l'option -c ?
    2144- Que fait l'éditeur de liens ?
    2245- 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 ?
    2651- Comment sait-on que le message est fini et que le programme doit s'arrêter ?
    2752- 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