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 :

Etat de la pile sous Linux et Windows


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    Par défaut Etat de la pile sous Linux et Windows
    lorsque que le processor rencontre l'instruction CALL indiquant l'appel d'une sous routine il va placer sur la pile l'adresse de retour de cette sous routine . cette valeur est l'adresse de la 1ere instruction suivant le CALL , quelques questions :

    cette pile a t'elle le meme fonctionnement sous linux que sous DOS?

    qu'est ce que c'est pile , des lignes de codes en ASM , un shéma de transistors...?

    les registres généraux du processor sont des parties électroniques ou des lignes de code?

    merci .

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Citation Envoyé par Bibouda
    cette pile a t'elle le meme fonctionnement sous linux que sous DOS?
    Euh oui, à quelques différences près: dos est rmode alors que Linux est en pmode; mais des les grandes lignes c pareil.

    Citation Envoyé par Bidouda
    qu'est ce que c'est pile , des lignes de codes en ASM , un shéma de transistors...?
    La pile c'est une partie de la mem (que tu choisi en rmode et qui t'est allouée par l'os en pmode) qui te permet de sauvegarder des données.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mov eax, 123          ; Met la valeur 123 dans le registre eax
    push eax          ; Sauvegarde eax dans le pile
    mov eax, 456          ; Met la valeur 456 dans le reg eax
    pop eax          ; Recharge eax à partie de la pile:eax=123
    C'est le registre esp et le seg ss qui déterminent où se trouve la pile dans la mem.

  3. #3
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    Par défaut
    ok merci mais les j'avais une question sur les registres tu saurais pas me dire ce que c'est ( relis le 1er post ) ?

    sinon la pile je sais que c'est une partie de la mémoire mais elle est électronique ou ce sont des lignes de codes?

    ya un prob , moi je suis en train d'étudier la pile la , et ton code ( meme si il est bon ne correspond pas au mien ) , moi j'ai ce genre de truc pour comprendre :

    CS:0000
    CS:0013 call_sous prog
    CS:0016

    lorsque que le processor rencontre l'instruction CALL indiquant l'appel d'une sous routine il va placer sur la pile l'adresse de retour de cette sous routine . cette valeur est l'adresse de la 1ere instruction suivant le CALL (0016 dans l'exemple ) .

    et on me dit que la pile peut etre représentée ainsi :

    SS:03FE ?
    SS:03FC SP 0016

    alors en fin de compte il y a quoi dans la pile , le code avec CS ou avec SS?

    on me dit aussi : la valeur 3FEh correspond au nombre 1022 qui est bien équivalent a 1024-2 mais pq c'est le 1er SS qui doit etre égal a 1024-2?

    merci .

  4. #4
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    Par défaut
    personne ne sait?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    je comprends pas très bien la questions. cs:(e)ip pointe sur l'instruction que le processeur est en train d'effectuer. ss:(e)sp pointe vers la fin de la pile. Quand tu fais, un call, il y a les calls near, et far. near c'est quand tu change juste (e)ip, mais que tu ne change pas de segments. Dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        call P
        ...
     
    P:  ...
        ret
    quand le procersseur doit effectuer le call, il stocke (e)ip dans la pile (enfin la valeur que devrai avoir (e)ip a la prochaine instruction), decremente de 2 (de 4 pour eip) la valeur de (e)sp (la pile est toujours a l'envers), et donne a eip la valeur d'offset de P. Le ret fait l'inverse, cad incremente (e)sp de 2 (ou 4) puis prend la valeur pointée par ss:(e)sp pour la mettre dans (e)ip.

    Dans un call far, en plus de stocker (e)ip le processeur stocke cs.

    Repose un peu mieux ta question pour que je puisse répondre plus spécifiquement

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 12
    Points : 13
    Points
    13
    Par défaut reponse - registres
    Juste une mise au point sur les registres :
    Il s'agit de blocs mémoire à l'intérieur du processeur, et ils sont, pour les généraux (ax, bx, etc...) au nombre de 8.
    Chaque registre possède une fonction de base (ax = accumulateur, bx = base, cx = compteur, dx = data, etc...), et on peut les utiliser pour (presque) tout faire.
    Voilà, si la réponse n'est pas suffisante (ou à coté de la plaque...), je m'efforcerais de rerépondre de meilleur façon

  7. #7
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    Par défaut
    oui mais ces blocs mémoire c'est quoi du silicium????

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Points : 105
    Points
    105
    Par défaut
    Bonjour,

    Ces blocs mémoire ne sont pas précisémment du silicium. Le Si étant le substrat. Ce qui fait un transistor est le dopage N ou P qu'on applique sur le substrat par divers procédés chimiques.

    Un registre est une série de bascules D. Une bascule D est une série de transistors plus ou moins arrangés pour faire la fonction d'une bascule D. Un registre de N bits étant constitué d'autant de bascules D.

    A la question:
    oui mais ces blocs mémoire c'est quoi du silicium????
    je répondrais donc:

    Un registre n'est pas du silicium, le silicum étant son support. Cependant tu n'as pas tort en pensant qu'un registre est un composant de la microélectronique qui a bel et bien une réalité physique et que l'on trouve dans le processeur. Tu le manipules ensuite dans ton programme assembleur avec des mov et patin coufin.

    Tout ceci ne répond pas a la question, m'enfin c'est pour la culture.

    golem
    +++

Discussions similaires

  1. [Free Pascal] GLScene : est-ce possible (sous Linux ET Windows) ?
    Par I_am_root dans le forum Free Pascal
    Réponses: 3
    Dernier message: 10/12/2007, 14h33
  2. Réponses: 3
    Dernier message: 07/06/2007, 10h49
  3. Création d'installeur sous Linux et Windows
    Par knarf87 dans le forum Linux
    Réponses: 3
    Dernier message: 09/05/2007, 11h05
  4. Serveur mysql sous linux ou Windows?
    Par gnaoui_9999 dans le forum Installation
    Réponses: 5
    Dernier message: 11/10/2006, 13h28
  5. Ethernet sous Linux et Windows
    Par Invité4 dans le forum Réseau
    Réponses: 9
    Dernier message: 17/04/2005, 11h19

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