|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : août 2011 Messages : 1 ![]() |
Bonjour à tous,
Voici quelques questions à propos d'une partie du code du fichier boot.s de linux 0.01 (excusez-moi si le sujet existe déjà, je ne voudrais pas créer une nouvelle discussion pour rien, mais je n'ai pas regardé). Voici le bout de code en question : Code asm :
On est censé ici lire les secteurs des pistes, mais certaines lignes sont (pour moi) assez obscures. Voici les questions que je me pose : Que vaut la variable sectors utilisée au début de ok1_read? Et où est-elle? On peut la voir, mais juste en commentaire au début du fichier. Je ne comprends pas du tout la ligne add cx, bx dans ok1_read. Jusqu'à présent, on mettait le nombre de secteurs par piste dans ax, on lui soustrait le nombre de secteurs restant à lire, on met le tout dans cx, on le multiplie par 512 (pour déterminer la taille des secteurs restant à lire???), et on en arrive ensuite à add cx, bx que je ne comprends pas. La doc que j'ai trouvée n'est pas claire là-dessus *. Quel est le rapport de tout ça avec la limite de 64KB (dans les commentaires de Linus) ?? La limite d'adressage ? Que signifie-t-elle, ici, dans la lecture des secteurs ? Ensuite, quelqu'un pourrait-il m'expliquer les routines read_it, die et rp_read (fonctionnement + chaque ligne de code). Qu'est ce qu'ENDSEG ? Quelle valeur vaut-il ? Dans die, pourquoi mettons-nous à 0 bx (à quoi cela servirait-t-il alors de l'ajouter à cx dans ok1_read) ? Et quelle est la valeur de es dans read_it ? 0x0 ou 0x10000 (je veux dire : conserve-t-il la valeur SYSSEG plus haut dans boot.s) ? À quoi sert le "test" ici, et pourquoi ce masque ? Quel bit cherche-t-on à tester et dans quel but ? Si un spécialiste pouvait m'éclairer… excusez pour les erreurs éventuelles. * La doc contient ceci en commentaire de add cx, bx : « cx = cx + offset in current segment (bx) = total bytes read after the processing of this time ». Si cx est la taille des secteurs restant à lire, et bx une adresse, comment peut-on les ajouter ? Merci beaucoup ! Bonne fin de journée ! |
||
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() ![]() François conception mécanique Inscription : janvier 2005 Messages : 330 ![]() |
C'est moi ou il manque pas mal de code ?
pour lire les secteurs, il est obligatoire de trouver l'interruption 13h quelque part puisqu'on est en mode réel a+ François |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com