Jump to content

je comprend pas la segmentation de la memoire vive


lordv

Recommended Posts

salut a tous

bon le truc c'est que j'ai trouvé un kernel sur le web deja commencé avec le tuto c'est un professeur d'une universite

de paris qui l'a fait.

mais le HIC c'est que plusieurs fichiers sont en assembleur et le reste en C et comme je n'ai apprit que ce dernier

il me sera difficile de continuer le kernel :-D

j'ai donc recherché des tutos sur ca et je suis tomber sur celui-ci

http://benoit-m.developpez.com/assembleur/...s/Partie1-2.php

mais je comprend pas tres bien la page la en question

bon j'ai compris le principe de la segmentattion de la memoire et des offsets

mais je me perd sur l'addressage en hexadecimal par exemple cet extrait

"""On pourrait penser que l’octet qui se trouve à l’adresse 0001:0000 est le numéro 65536. Il n’en est rien. C'est l'octet numéro 16.

Eh oui ! Les segments ne sont pas situés gentiment les uns à la suite des autres. Ils sont fort mal élevés et n'attendent pas que les segments qui les précédent soient terminés avant de commencer ! Ils se marchent donc sur les pieds.

Autrement dit, le deuxième segment ne démarre pas à l'octet 65536 comme il devrait le faire s'il était bien sage, mais à l'octet 16 ! Le troisième démarre à l'octet 32 et ainsi de suite…

La notion de segment n’est pas tant physique que mathématique : elle sert à se repérer dans la RAM.

La conséquence immédiate de tout cela est qu'un octet n'a pas une adresse unique. Par exemple, l'octet numéro 66 peut être adressé par 0000:0042, mais aussi par 0001:0032, par 0002:0022, par 0003:0012 ou encore par 0004:0002. Toutes ces adresses sont équivalentes. """

je dirais que je trouve pas de relation à tous cela

quand on compte en hexa on fait de 0 à 9 puis c'est A qui suit jusqua F apres qu'en est t-il de ce qui suit 10?

merci par avance :-D

Link to comment
Share on other sites

Après 10, c'est 11, 12, 13..., 18, 19, 1A, 1B, ..., 1E, 1F, 20 etc.

Sinon la segmentation ne sert plus beaucoup maintenant. Elle est utilisée le temps de charger l'OS (au moins le début), ensuite on passe rapidement en mode pagination.

Ce qu'il voulait dire si j'ai bien compris c'est que pour toutes les addresses X1X2X3X4:Y1Y2Y3Y4, il si le résultat X3+Y4 est le même, alors c'est que c'est la même addresse. Pareil pour X2 et Y3 et X1 et Y2.

Link to comment
Share on other sites

la tu metonne je suis pas encore arriee au X1 et Y3 mais j'espert bien

pour l'instant ce que je veux faire c'est ameliorer le kernel apres s'il est stable

bah la je pourrai continuer et essayer de comprendre la pagination et tout le reste

Link to comment
Share on other sites

ok je comprend maintenant tu as decompose la notation des adresseles xxx c'est les segments et les yyyc'est les offsets

j'avais pas vu les deux points faut dire que j'ai depasse ce stade maintenant je suis du cote du psp et des piles

mais au fait les piles c'est juste pour contenir des donnee comme un reservoir

comme les contener le premier à entrer est le dernier à sortir?

bon ya que le tuto que je vous ai montrer n'est conforme a mes normes je voulais un tuto sur l'assembleur et le chargement des os mais non monsieur me sert les fichiers EXE de windows pour faire quoi avec ?

au fait pourquoi ne pasle develloper ensemble je pensais a un systeme leger pour emuler la play station ou d'autre jeux et le tous avec la possibiliter de jouer en reseaux ? vous en penser quoi on pourrais faire comme pour les tests de HDD

avec une mise ajour des codes sources et le vote de quelque personnes pour accepter les code sources ?

Link to comment
Share on other sites

le mot donnée est un peu large. Disons que la pile peut contenir des données. Il est possible de sauvegarder des informations par la commande assembleur PUSH et de les recupérer par la commande POP. Dernier mis, premier récuperé, comme une pile d'assiette... tu prends pas celle de dessous...

Sinon la pile sert a stocker les adresses des fonctions. Quand ton programme est dans la fonction A et qu'il appelle la fonction B, il stocke l'endroit de l'appel (CS:IP) dans la pile, execute B et recharge l'adresse de retour a partir de la pile afin de retrouver ou il etait dans A.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...