| 727 | ''''''''''''''' |
| 728 | }}} |
| 729 | - Ouvrez les fichiers `kinit.o.s` et `kernel.x.s`, le premier fichier est le désassemblage de `kinit.o` et le second est le désassemblage de `kernel.x`. Dans ces fichiers, vous avez plusieurs sections. Les sections `.MIPS.abiflags`, `.reginfo` et `.pdr` ne nous sont pas utiles (elles servent au chargeur d'application, elles contiennent des informations sur le contenu du fichier et cela ne nous intéresse pas).\\Notez l'adresse de kinit dans les deux fichiers, est-les mêmes ? Sont-elles dans les mêmes sections ? Expliquez pourquoi. |
| 730 | {{{#!protected ------------------------------------------------------------------------------------ |
| 731 | ''''''''''''''' |
| 732 | * Dans kinit.o.s, l'adresse de `kinit` est `0` alors que `kernel.x.s` l'adresse est `0x80000000`. |
| 733 | * Dans kinit.o.s, `kinit` est dans la section `.text` alors que dans `kernel.x.s` `kinit` est dans la section `.ktext`. |
| 734 | * La raison est que |
| 735 | * dans `kinit.o`, `kinit` n'a pas encore été placé, le compilateur commence toutes ses sections à 0, donc `kinit` est dans la section `.text` et elle commence à 0. |
| 736 | * dans `kernel.x.s` `kinit` est placé et mis dans la section `.ktext` comme le fichier `kernel.ld` le demande. |
763 | | 1. ? |
764 | | {{{#!protected ------------------------------------------------------------------------------------ |
765 | | ''''''''''''''' |
766 | | - |
767 | | ''''''''''''''' |
768 | | }}} |
769 | | |
770 | | **Exercices** |
771 | | |
| 774 | 1. Dans le fichier `kinit.c`, il est question d'un loopback, à quoi cela sert-il ? |
| 775 | {{{#!protected ------------------------------------------------------------------------------------ |
| 776 | ''''''''''''''' |
| 777 | - Par défaut les caractères tapés au clavier ne sont pas afficher par le matériel. Or, l'utilisateur s'attend au fait que s'il tape sur une touche, celle-ci s'affiche. Comme ce n'est pas le matériel qui le fait c'est au logiciel de le faire. |
| 778 | ''''''''''''''' |
| 779 | }}} |
| 780 | 1. Dans le fichier `kinit.c`, on trouve `__tty_regs_map[ tty%NTTYS ].write = *s`, explique le modulo ? |
| 781 | {{{#!protected ------------------------------------------------------------------------------------ |
| 782 | ''''''''''''''' |
| 783 | * C'est une sécurité, un peu inutile ici, qui permet de ne pas écrire en dehors de la zone des registres du contrôleur de tty |
| 784 | ''''''''''''''' |
| 785 | }}} |