IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Valeur des registres de segments ES, FS, GS


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Valeur des registres de segments ES, FS, GS
    Salut,

    Est-ce que les registres de segments ES, FS, GS ont au lancement d'un programme (en mode protégé) la même valeur à savoir celle de DS ?

    Leur documentation n'est pas très fournie je trouve (ce sont des pointeurs 16 bit sur une table de descripteurs...).

    Merci.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    Ca dépend de l'OS, c'est celui-ci qui fixe le contenu lors de la création d'un processus.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci.

    Je suis sous Windows, est-ce qu'on peut assumer que ES a la même valeur que DS au lancement d'un processus ? ou il vaut mieux initialiser soi même ES ?

    De toutes façons en terme de "segments", on ne peut pas "manipuler" d'autres valeurs que celles des segments de code, de données et de pile ?

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    FS a une signification il me semble, qu'il contient des variables.

    Une simple recherche vite fait sur google :
    http://www.developpez.net/forums/d18...fs-processeur/

    Les segments sont contenus dans la GDT :
    https://fr.wikipedia.org/wiki/Global_Descriptor_Table

    Tu peux mettre un sélecteur de segment dans DS, ES, FS à condition qu'une entrée correspondante existe dans la GDT. Je ne me rappelle plus si les protections sont déclenchées lors du changement de valeur du registre de segment ou lors de la première tentative d'accès.

    Les protections sont en gros :
    tu ne peux pas changer de segment si tu n'es pas au même niveau de privilèges (ring0/ring3). Tu ne peux pas faire d'écriture dans un segment de code. Tu ne peux pas exécuter de code depuis un segment non code. Tu ne peux pas lire ou écrire à une adresse mémoire dépassant les limites de la taille du segment, bien que cela soit maintenant plutôt géré par la pagination. (dans ce cas on fait correspondre la taille des segments à la taille mémoire et la protection se fait au niveau de la pagination).

    Tu peux modifier la GDT uniquement en passant par un appel système sous réserve que l'API de l'OS est une fonction permettant cette manipulation, et ceci demande bien sûr d'être administrateur.

    Je suis sous Windows, est-ce qu'on peut assumer que ES a la même valeur que DS au lancement d'un processus ?
    Pour répondre à ta question, je pense que oui. FS a une signification, pour GS je ne sais pas si Windows en fait usage.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour toutes ces informations chrtophe! Cela m'a bien aidé à combler mes lacunes!

Discussions similaires

  1. Comment énumérer les clés et valeurs des registres
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 13/02/2013, 20h42
  2. Réponses: 3
    Dernier message: 21/05/2011, 06h33
  3. Rôle des registres de segment en mode protégé
    Par E-Sh4rk dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 27/02/2010, 15h37
  4. Problème pour définir une valeur dans la base des registres
    Par hellspawn_ludo dans le forum Dreamshield
    Réponses: 2
    Dernier message: 30/09/2007, 03h03
  5. les valeurs des registres
    Par amrock dans le forum C++
    Réponses: 2
    Dernier message: 28/03/2005, 21h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo