6
votes

Quel est le rôle de la pile dans un microprocesseur?

Quel est le rôle de la pile dans un microprocesseur?


0 commentaires

10 Réponses :


1
votes

Cela dépend du microprocesseur. Généralement, son rôle consiste à maintenir les variables locales et les paramètres des fonctions.

Et en fait, ce n'est pas dans le microprocesseur, c'est dans la mémoire centrale.


3 commentaires

Il n'a pas dit que la pile était dans le microprocesseur.


Eh bien, il a dit «la pile dans un microprocesseur», donc je suppose que c'est une clarification utile.


La pile peut avoir un rôle dans un microprocesseur sans étant dans le microprocesseur. Par exemple, A7 est le pointeur de pile dans un 68000. Vous pouvez donc certainement dire que la pile joue un rôle dans le microprocesseur sans la mémoire de pile résidant physiquement dans le microprocesseur.



-5
votes

En réalité, la pile n'est pas une teminologie du processeur, elle est utilisée pour l'appel de routine de la langue. Une routine peut utiliser Stack pour obtenir des paramètres et enregistrer des variables locales, appelez également d'autres routines.


4 commentaires

Pas une terminologie pour un processeur? Instructions d'assemblage Push / Pop Quelqu'un? : P


@Thorarin, processeur de CISC comme Intel fournit des instructions d'assemblage Push / POP pour prendre en charge explicitement le fonctionnement de la pile, a également un registre SP; Mais un autre processeur RISC comme MIPS ne fournit pas d'instruction PUSH / POP pour le fonctionnement de la pile, aucun registre SP spécifié. Bien qu'ils puissent tous être utilisés pour la mise en œuvre de la pile, mais je pense vraiment que la pile est un concept de langue, comme C, comme Java. Vous pouvez écrire un montage pour le processeur sans STCK nécessaire du tout.


@arsane: Ce que je vois quand je regarde MIPS est la pile, la pile, la pile. en.wikibooks.org/wiki/mips_assembly/subroutines


@Nosredna, c'est une sorte de vision de programmation, assurez-vous que vous pouvez utiliser l'ensemble pour mettre en œuvre la pile, mais cela ne signifie pas que la pile est pour le processeur. La pile est pour l'appel de routine de la langue. Le processeur lui-même prend simplement en charge de saut / branche / Excension / Charge / Save Chure.



0
votes

Certains microprocesseurs ont des registres de pile pour améliorer l'efficacité, jetez un coup d'œil au Article SPARC à Wikipedia; D'autres ont un microttack pour les microroutines ... c'est un terme très large, en fait.


0 commentaires

8
votes

Stack est utilisé en grande partie pendant un appel de fonction mais en fonction de la langue et du niveau de programmation, il peut être utilisé pour stocker temporairement les données du registre de processeur ou d'autres variables.

En outre, la pile peut également être utilisée pour un stockage à grande échelle à grande échelle de données lors de l'utilisation des fonctions reconsive qui stockent des données partielles dans la pile et s'appellent à nouveau.

Le Utilisation générique de la pile est pour,

  1. Adresse de retour
    • Valeur de retour
    • paramètres à la fonction appelée
    • variables locales dans la fonction appelée
    • registres de processeur qui seront réutilisés dans la fonction appelée

      Et oui, la pile est également utilisée pour Exploits .
      Sa nature de porter l'adresse de retour à l'endroit où une fonction appelée revient, couplé à la faiblesse des bornes de tableau de chèques dans la langue C , donne un très Belle façon de causer tampon débordant dans la pile d'une vulnérable (passagaire Écrit) Programme.


0 commentaires

1
votes

Stack est utilisé pour Stocker et récupérer les adresses de retour pendant les appels de fonction. Sa mise à bonne utilisation lors d'appels de fonction imbriqués ou des appels de fonction récursive. Il est également utilisé pour Arguments de transfert vers une fonction .

sur un microprocesseur, il est également utilisé pour Stocker le contenu du registre d'état avant un interrupteur de contexte.

acclamations


0 commentaires

4
votes

Au niveau le plus bas, la pile est l'endroit où certaines instructions stockent ou récupérent des données et où les données sont stockées lorsqu'une interruption se produit. Les microprocesseurs varient, mais il existe 5 types généraux d'instructions spécifiques à la pile:

  1. Push - Mettez des données sur la pile
  2. pop (ou tirez) - "Supprimer" les données de la pile
  3. Appel - Allez à un sous-programme et mettez l'adresse de retour sur la pile
  4. retour - retour d'un sous-programme en chargeant le compteur de programme avec le haut de la pile
  5. INT (ou SWI) - Interruption du logiciel; Un appel spécialisé

    Lorsqu'une interruption de processeur se produit (en raison d'un périphérique externe), la CPU enregistre le compteur de programme actuel et (généralement) les drapeaux Inscrivez-vous sur la pile et sautent vers le sous-programme de manutention. Cela permet de traiter le sous-programme de traitement de traiter l'interruption et de revenir à tout ce que la CPU faisait avec son état actuel préservé.

    Bien qu'un microprocesseur n'a qu'une pile active à la fois, le système d'exploitation peut le faire apparaître comme s'il y a plusieurs piles. Au moins un pour le système d'exploitation, un pour chaque processus et un pour chaque fil. En fait, les threads eux-mêmes peuvent mettre en œuvre plusieurs piles.

    À un niveau supérieur, quelle que soit la langue utilisée pour implémenter un thread utilisera souvent la pile à ses objectifs pour stocker des paramètres d'appel fonctionnels, des variables locales et des valeurs de rendement de fonction (parlant dans de larges traits ici - Consultez vos langues ' Documentation de bas niveau pour des détails spécifiques).

    conclut donc mon explication ascendante de la pile.


1 commentaires

Lorsqu'une interruption de processeur se produit (en raison d'un périphérique externe), la CPU enregistre le compteur de programme actuel et (généralement) les drapeaux Inscrivez-vous sur la pile et allez à la manutention du sous-programme - Comment ce corrélation doit-il PCB et interrupteur de contexte?



0
votes

http://www.hybyprojects.com/microprocessor_systems/images/stack.gif

La pile est un magasin temporaire pour les données.

La CPU peut pousser des données importantes sur la pile, alors qu'elle traite d'autres données.

Lorsqu'il finit cette tâche, il tire les données sauvegardées de la pile.

C'est comme un tas de plaques. La plaque inférieure est la première des données qui a été poussée sur la pile. La plaque supérieure est la dernière donnée à pousser. La plaque supérieure est tirée en premier et la plaque inférieure est la dernière donnée à tirer. C'est une dernière pile de première sortie.

Dans les diagrammes, X est le premier à être poussé, puis et enfin A. La CPU disparaît pour traiter d'autres données. À la fin de cette tâche, il retourne pour tirer les données enregistrées. Premier A est tiré, puis y et enfin x.

L'instruction pour appuyer sur les données est PHA. Seules les données dans l'accumulateur peuvent être poussées sur la pile. D'autres données peuvent être poussées si elles sont transférées à l'accumulateur d'abord.

L'instruction pour tirer des données de la pile est PLA. Les données sur la pile sont transférées à l'accumulateur.

La pile 6502 comprend 256 octets et occupe la page 1, adresse 256 à 511.


0 commentaires

0
votes

Juste pour ajouter à certaines de ces réponses, certains micros inférieurs tels que la ligne PIC ont un matériel de matériel , ce qui signifie qu'il ne peut pas être alloué de manière dynamique tel quel dans le matériel.

Les implications de ceci sont que vous ne pouvez aller que si de nombreux appels de fonction avant de manquer de pile; Cela est vrai que des logiciels également, mais la pile matérielle basée sur le matériel peut être très limitative et peut vous obliger à repenser votre programme afin de "aplatir" vos appels de fonction.


0 commentaires

0
votes

Une pile est une mise en œuvre d'un tampon LIFO (DERNIER IN - PREMIER OUT). La FIFO (premier en premier out) est également appelée file d'attente. Mais retour à la vie.

Les piles de l'architecture X86 permettent aux concepteurs logiciels de se dispenser avec des éléments aussi étranges comme des registres d'adresses de retour et d'interrompre les registres d'adresses de retour trouvés dans les processeurs RISC. Tout peut résider sur la pile, ce qui signifie qu'il existe une méthode unique normalisée et unifiée de manipulation d'appels / retours, paramètres / variables locales et retours d'interruption / interruption. L'utilisation de la méthode sur des piles séparées simplifie la mise en oeuvre de multi-threading.

RISC, en revanche, utilise un tampon semblable à la pile, bien qu'ils gardent des parties significatives des informations connexes ailleurs. Les «piles» de RISC peuvent être plus rapides (pas sûres) mais elles sont définitivement plus difficiles à comprendre que celles du X86.


0 commentaires

2
votes

Au début de l'informatique, les appels de sous-programme ont été traités en ayant un mot de mémoire de mémoire avec chaque sous-programme pour indiquer où il a été appelé. Pour appeler un sous-programme, on ferait quelque chose comme: xxx

Ce modèle peut être optimisé par l'appelant place l'adresse de retour dans un registre et que la routine le stocke vers le "retour". tache à l'entrée. Ce modèle a fonctionné, mais cela avait quelques problèmes. Non seulement cela a-t-il généralement perdu la mémoire - il n'avait également aucun moyen de traiter du code récursif ou de re-participant. L'ajout d'une pile a permis de simplifier le code en demandant simplement que l'appelant disent simplement "stocker l'adresse de retour quelque part appropriée", sans déranger les plus antérieurs, et pour la fonction appelée pour simplement dire "retour à l'appelant le plus récent qui n'a pas été retourné encore ". Cela a permis le développement d'un code de ré-entrant et signifiait qu'il n'était nécessaire que de stocker suffisamment d'adresses de retour pour gérer la chaîne d'appels de fonction imbriquée la plus profonde qui se produirait réellement.


5 commentaires

Si la technologie antique est pertinente, vous devriez d'abord décrire ce qu'est un abaque et comment ils fonctionnent.


@ User34660: L'objectif de la pile était d'améliorer une technologie existante qui impliquait réellement des ordinateurs. Les machines qui stockent des adresses de retour sans utiliser de pile ni d'attente de programmeurs à faire de même n'ont pas été courantes depuis longtemps, mais comprenant comment elles fonctionnaient est pertinente pour comprendre ce qu'est une pile.


Probablement je n'aurais pas dit rien sinon pour le mot "antique". Il est subjectif avec des connotations négatives. La technologie que vous décrivez est extrêmement basique et n'aurait existé que dans des processeurs qui étaient à peine plus qu'une calculatrice.


@ user34660: La technologie que je décris est, d'après ce que je comprends, la façon dont les compilateurs de fortune ont fonctionné. Je ne les décrirais pas comme "à peine plus qu'une calculatrice". Bien que l'utilisation des instructions d'appel de sous-programme est souvent plus efficace que d'essayer de configurer manuellement un vecteur de retour, cette dernière approche peut toujours fonctionner de manière raisonnable pour les langues qui ne prennent pas en charge la récursivité.


Nous entrons dans une discussion et Stackoverflow n'est pas conçu pour cela. Je pense que nous devrions accepter de ne pas être d'accord. Je pense que "antique" est subjectif et Stackoverflow n'est pas conçu pour une discussion subjective. Alors répondez cependant que vous voulez répondre mais ne supposez pas que je suis d'accord avec cela si je ne réponds pas.