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

Programmation d'OS Assembleur Discussion :

Task State Segment : champ limit


Sujet :

Programmation d'OS Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Task State Segment : champ limit
    Bonjour,

    je me pose une question a propos du champs "limit" d'un
    descripteur de "Task State Segment".

    Normalement la taille minimale d'un TSS est de 104 octets (0x68).
    Le champ "limit" doit contenir la taille du segment, en octet ou en page.


    (Manuel Intel Volume 3A 3-13)
    Segment limit field
    Specifies the size of the segment.
    Donc d'apres moi le champ limit devrait toujour contenir au moins 0x68
    (dans le cas d'un TSS avec le bit G a 0) mais le manuel Intel dit que:


    (Manuel Intel Volume 3A 6-7)
    When the G flag is 0 in a TSS descriptor for a 32-bit TSS,
    the limit field must have a value equal to or greater than 67H,
    one byte less than the minimum size of a TSS.
    Pourquoi peut-on mettre 0x67 ?
    Voila ma question...


    Merci a ceux qui eclaireront ma lanterne

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    Citation Envoyé par FOX19881 Voir le message
    Pourquoi peut-on mettre 0x67 ?
    Voila ma question...
    La réponse se trouve dans ton post :
    one byte less than the minimum size of a TSS
    En clair, le champ "limit" du TSS doit contenir sa taille moins 1 octet. Donc, si le TSS fait 104 octets (0x68), la valeur du champ "limit" doit être 104 - 1 octet = 103 (0x67).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Merci de ta réponse mais non je n'ai pas donné la réponse dans mon premier post.

    Je sais bien que le manuel Intel autorise 0x67 mais ma question
    est pourquoi autoriser 0x67 alors que le champ "limit" est sense
    contenir la taille du segment (donc 0x68)...

    Sinon je ne crois pas que:

    le champ "limit" du TSS DOIT contenir sa taille moins 1 octet.
    Je pense que je peux tres bien mettre 0x68 dans mon champ limit
    si la taille de mon segment fait 104 octets
    et c'est ce qui me fait me demander pourquoi on peut mettre 0x67.
    Quel est l'interet ?

    Je suis pas sur d'avoir bien reformulé mon interrogation...

  4. #4
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    le champ limite contient en fait l'adresse maximum autorisé pour acceder au segment. par exemple pour un segment de 64 octets, la valeur "limit" contiendrat 63 car on peut adresser de 0 à 63

    cette confusion vient du faite que les ordinateurs compte a partir de zéro et pas de 1 comme les humains (ça ne vous a jamais semblé estrange que n'ou n'ayont aucun siècle zéro)

    ah le zéro quel belle invention!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Ah oui,

    en fait ma confusion vient du fait que lorsque le bit G est a 1 on
    met effectivement la TAILLE du segment dans le champ limit
    alors que quand le bit G est a 0 on ne met plus la taille mais
    la valeur du dernier offset...

    (effectivement tommy60 tu avais raison)

    Merci a vous deux.

  6. #6
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    G c'est la granularité de la limite

    quant g = 1 la limite est a multiplier par 4096 (4KiBi)

    j'ai pas vu d'indication comme quoi c'était différent pour les TSS

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par bifur Voir le message
    j'ai pas vu d'indication comme quoi c'était différent pour les TSS
    non c'est pas different, mais comme je l'ai dit j'ai mal interprete le manuel Intel
    et donc j'ai cru que ma question etait specifique aux TSS alors que non.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Bonsoir,

    je croyais avoir compris mais je viens de m'appercevoir que non.

    Dites moi si je me trompe mais si je met le bit G a 1
    et que je met la limit a 1, alors je peux acceder a 2 pages:
    de base + 0x0 a base + 0x1FFF. (pas dans le cas d'un segment en expand-down biensur)

    Si c'est ca alors effectivement j'avais rien compris.

    Si vous pouviez me confirmer ce que je viens de dire... merci

  9. #9
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    de ce que j'avait comprit c'est bien ça mais je ne l'ai pas encore vérifié dans la pratique

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Ok merci de ta confirmation.

    Pour ce qui est de la pratique, en debuggant avec bochs (avec qemu aussi) et en affichant des informations sur les segments, j'ai remarque que pour une limite que j'avais mis a 1, il m'affichait limit=0x00001fff.
    D'ailleurs je viens d'essayer en mettant la limite a 0 sur le meme segment de code et l'execution se deroule correctement (et bochs affiche limit=0x00000fff).

    Je demandai confirmation pour etre sur de pas avoir compris de travers cette fois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR XI] Nombre de caractères dans un champ limité à 254
    Par cubitus68 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/11/2012, 11h17
  2. State machine: nombre limité de transitions
    Par benroux dans le forum LabVIEW
    Réponses: 1
    Dernier message: 25/05/2011, 12h05
  3. Spool : nbre de champ limité?
    Par StephSushiSig dans le forum SQL
    Réponses: 4
    Dernier message: 25/08/2010, 16h27
  4. Réponses: 4
    Dernier message: 05/05/2009, 09h54
  5. Nombre de champs limité dans formulaire
    Par Julien04 dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2009, 23h52

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