Pile est utilisée en grande partie au cours d'un appel de fonction mais selon la langue et le niveau de la programmation, il peut être utilisé pour stocker temporairement les processeur de données du registre ou d'autres variables.
En outre, la pile peut également être utilisé à court terme à grande échelle de stockage de données lors de l'utilisation de fonctions récursives qui stockent des données partielles dans la pile et de l'appeler à nouveau.
processeur registres qui seront réutilisés dans la fonction appelée
Et, oui, la pile est également utilisé pour exploits.
Sa nature de porter l'adresse de retour à l'endroit où une fonction appelée retourne en arrière,
couplé avec la faiblesse de la matrice de limites vérifie dans le C langue, donne un très
belle façon de cause les dépassements de mémoire tampon dans la pile vulnérables (mal écrit).
Au niveau le plus bas de la pile est le lieu où certaines instructions de stockage ou de récupération de données et où les données sont stockées lorsqu'une interruption se produit. Microprocesors varier, mais il y a 5 types de pile d'instructions spécifiques:
PUSH - mettre les données dans la pile
POP (ou de TRACTION) - "supprimer" les données de la pile
D'APPEL de saut à un sous-programme et de mettre l'adresse de retour sur la pile
Retour - RETOUR d'un sous programme par le chargement du compteur de programme, avec le haut de la pile
INT (ou SWI) - interruption logicielle; un APPEL spécialisé
Lorsqu'un processeur interruption se produit (en raison d'un périphérique externe), le PROCESSEUR enregistrer le compteur de programme, et (généralement) les drapeaux registre sur la pile et de sauter à la manipulation de sous-routine. Cela permet la manipulation de sous-routine pour traiter l'interruption et retourner à ce que le CPU était en train de faire avec son état actuel préservé.
Tandis qu'un microprocesseur a une seule pile active à un moment, le système d'exploitation peut le faire apparaître comme si il y a plusieurs piles. Au moins l'un pour l'OS, un pour chaque processus, et une pour chaque thread. En fait, les fils eux-mêmes peuvent mettre en œuvre plusieurs piles.
À un niveau plus élevé, quelle que soit la langue utilisée pour mettre en œuvre un thread va souvent utiliser la pile pour ses propres fins, pour stocker fonctionnel paramètres d'appel, les variables locales et d'appel de fonction, les valeurs de retour (en parlant ici à grands traits -- consulter vos langues et de bas niveau de la documentation pour les détails précis).
Conclut donc mon bottom-up explication de la pile.
Quand un processeur interruption se produit (en raison d'un périphérique externe), le PROCESSEUR enregistrer le compteur de programme, et (généralement) les drapeaux registre sur la pile et de sauter à la manipulation de sous-routine - comment cette corrélation pour la carte PCB et commutateur de contexte?
Dans les premiers jours de l'informatique, de la sous-routine appels ont été traités par avoir un mot de la mémoire RAM avec chaque sous-routine pour indiquer l'endroit où il a été appelé à partir. Pour appeler un sous-programme, on pourrait faire quelque chose comme:
charge foo_return avec #LABEL_123
goto foo
#LABEL_123:
...code à exécuter après le retour de foo
toto:
... faire des trucs
goto foo_return
Ce modèle peut être optimisé par l'appelant place l'adresse de retour dans un registre, et d'avoir la routine de la stocker dans le "retour" tache sur entrée. Ce modèle a fonctionné, mais il a eu quelques problèmes. Non seulement il l'a fait généralement la mémoire des déchets--il a également eu aucun moyen de traiter avec récursive ou de ré-entrant le code. L'ajout d'une pile de permis de simplifier le code en ayant l'appelant tout simplement dire "stocker l'adresse de retour dans un endroit approprié", sans perturber les précédentes, et pour la fonction appelée pour dire simplement "le retour à la plus récente de l'appelant qui n'a pas été retourné à encore". Cela a permis le développement de ré-entrant le code, et signifiait qu'il était seulement nécessaire de stocker suffisamment d'adresses de retour à la poignée la plus profonde imbriquée de la chaîne d'appels de fonction qui jamais réellement se produire.
Si l'ancienne technologie est pertinente, vous devez d'abord décrire ce qu'est un abaque est et comment ils fonctionnent. L'objectif de la pile est d'améliorer une technologie existante qui, de fait, participé à des ordinateurs. Les Machines qui stockent les adresses de retour sans l'aide d'une pile ou d'attendre les programmeurs à faire de même pas courant pour une longue période de temps, mais de comprendre comment ils ont travaillé, est pertinente à la compréhension de ce qu'est une pile. Probablement que je n'aurais pas dit une chose si ce n'est pour le mot "ancien". C'est subjectif, avec des connotations négatives. La technologie que vous décrivez est très basique et n'aurait existé dans les processeurs qui étaient à peine plus d'une calculatrice. La technologie que je décris est, d'après ce que je comprends, le début compilateurs FORTRAN travaillé. Je ne voudrais pas raconter de ceux que "à peine plus d'une calculatrice". Bien que l'utilisation de sous-routine-les instructions d'appel est souvent plus efficace que de tenter de les renvoyer vecteur manuellement, la dernière approche peut encore fonctionner raisonnablement bien pour les langues qui ne supportent pas la récursivité. Nous entrons dans une discussion et Stackoverflow n'est pas conçu pour cela. Je pense que nous devrions accepter d'être en désaccord. Je pense que les "anciens" est subjective et Stackoverflow n'est pas conçu pour subjective de la discussion. Afin de répondre mais vous voulez la réponse, mais ne supposez pas que je suis d'accord avec elle si je ne réponds pas.
Cela dépend du microprocesseur. En général, son rôle est de garder les variables locales et fonctions des paramètres.
Et effectivement il n'est pas dans le microprocesseur, c'est dans la mémoire centrale.
Il n'a pas dit de la pile était dans le microprocesseur. Eh bien, il a dit "de la pile dans un microprocesseur," donc, je suppose que c'est une utile clarification. La pile peut avoir un rôle dans un microprocesseur sans être dans le microprocesseur. Par exemple, l'a7 est le pointeur de pile dans un 68000, de sorte que vous pouvez certainement dire que la pile joue un rôle dans le microprocesseur sans la pile de la mémoire physiquement résidant dans le microprocesseur.
Pile est utilisée pour de stocker et de récupérer des adresses de retour pendant les appels de fonction. Son utilisation à bon escient lors des appels de fonctions imbriquées ou récursive des appels de fonction. Il est également utilisé pour transfert des arguments à une fonction.
Sur un microprocesseur, il est également utilisé pour stocker le statut le contenu d'un registre avant un changement de contexte.
Certains microprocesseurs ont pile de registres pour améliorer l'efficacité, jetez un oeil à la SPARC article dans wikipédia; d'autres ont un microstack pour la microroutines... C'est un terme assez large, en fait.
La pile est un magasin de stockage temporaire de données.
L'UC peut POUSSER les données importantes sur la pile, tandis que c'est le traitement d'autres données.
Lorsqu'il a terminé cette tâche, il extrait les données enregistrées hors de la pile.
Sa comme une pile d'assiettes.
La plaque de fond est le premier bit de données qui a été poussé sur la pile.
La plaque supérieure est le dernier à être poussé.
La plaque supérieure est tiré de la première et de la plaque de fond est le dernier à être tiré.
Il est un DERNIER entré, PREMIER SORTI de la pile.
Dans les diagrammes, X est le premier à être enfoncé, puis Y et enfin A.
La CPU s'en va pour le traitement d'autres données.
À l'achèvement de cette tâche, il retourne à tirer les données sauvegardées.
D'abord Un est tiré, puis Y et X. enfin
L'instruction pour l'envoi de données est de PHA.
Seules les données dans l'accumulateur peut être poussé sur la pile.
D'autres données peuvent être poussés si elle est transférée à l'accumulateur d'abord.
L'instruction pour l'extraction de données à partir de la pile est PLA.
Les données sur la pile est transféré à l'accumulateur.
Le 6502 pile se compose de 256 octets et occupe la page 1, les adresses de 256 à 511.
Juste pour ajouter à certaines de ces réponses, certains bas de gamme de micros comme le PIC de ligne ont une matériel de la pile, ce qui signifie qu'il ne peut être alloué dynamiquement comme il est dans le matériel.
Les implications de tout ceci que vous ne pouvez aller à de nombreux appels de la fonction profonde, avant d'exécuter hors de la pile; c'est le cas de logiciels aussi bien sûr, mais souvent le matériel en fonction de la pile peut être très limitée, et peut vous obliger à repenser votre programme, pour "aplatir" hors de vos appels de fonction.
Une pile est une implémentation de la méthode LIFO (Last In - First Out) de la mémoire tampon. Le FIFO (First In - First Out) est également connu comme une file d'attente. Mais pour en revenir à la méthode LIFO.
Piles dans l'architecture x86 permettre à des concepteurs de logiciels de renoncer à ces choses étranges que l'adresse de retour des registres et de l'interruption de l'adresse de retour registres que l'on retrouve dans les processeurs RISC. Tout peut résider sur la pile, ce qui signifie qu'il existe un unique standardisé et de la méthode unifiée de la gestion des appels/des retours, des paramètres ou des variables locales et des interruptions interruption renvoie. L'utilisation de la méthode sur des piles simplifie la mise en œuvre de multi-threading.
RISC, en revanche, utilise une pile comme tampon si ils gardent significatnt pièces de l'info ailleurs. RISC "piles" peut être plus rapide (pas sûr), mais ils sont certainement la plus difficile à comprendre que ceux du x86.
Fait pile n'est pas un teminology pour le processeur, il est utilisé pour la langue de l'appel de routine. Une routine peut utiliser la pile pour obtenir les paramètres et enregistrer les variables locales, aussi appel à d'autres routines.
Pas une terminologie d'un processeur? PUSH / POP instructions de montage de n'importe qui? 😛 Cdci processeur comme Intel fournit push/pop instructions de montage explicitement le soutien de la pile de l'opération, a aussi le registre sp; mais d'autres processeur risc comme MIPS ne fournit pas de push/pop instruction pour la pile de fonctionnement, absence de registre sp specifiied. Mais ils peuvent tous être utilisés pour la mise en œuvre de la pile, mais je pense vraiment que la pile est un concept dans la langue, comme en c, comme java. Vous pouvez écrire assemblée pour le processeur sans stck nécessaire à tous. Ce que je vois quand je regarde MIPS est pile, pile, pile. en.wikibooks.org/wiki/MIPS_Assembly/Subroutines c'est une sorte de programmation de vue, bien sûr, vous pouvez utiliser l'assemblée pour mettre en œuvre la pile, mais il ne signifie pas que la pile est pour le processeur. La pile est de la langue de l'appel de routine. Processeur lui-même il suffit de prendre la charge de saut/branche/excution/charger/enregistrer chose.
Pile est utilisée en grande partie au cours d'un appel de fonction mais selon la langue et le niveau de la programmation, il peut être utilisé pour stocker temporairement les processeur de données du registre ou d'autres variables.
En outre, la pile peut également être utilisé à court terme à grande échelle de stockage de données lors de l'utilisation de fonctions récursives qui stockent des données partielles dans la pile et de l'appeler à nouveau.
La générique de l'utilisation de la pile est pour,
Et, oui, la pile est également utilisé pour exploits.
Sa nature de porter l'adresse de retour à l'endroit où une fonction appelée retourne en arrière,
couplé avec la faiblesse de la matrice de limites vérifie dans le
C
langue, donne un trèsbelle façon de cause les dépassements de mémoire tampon dans la pile vulnérables (mal écrit).
OriginalL'auteur
Au niveau le plus bas de la pile est le lieu où certaines instructions de stockage ou de récupération de données et où les données sont stockées lorsqu'une interruption se produit. Microprocesors varier, mais il y a 5 types de pile d'instructions spécifiques:
Lorsqu'un processeur interruption se produit (en raison d'un périphérique externe), le PROCESSEUR enregistrer le compteur de programme, et (généralement) les drapeaux registre sur la pile et de sauter à la manipulation de sous-routine. Cela permet la manipulation de sous-routine pour traiter l'interruption et retourner à ce que le CPU était en train de faire avec son état actuel préservé.
Tandis qu'un microprocesseur a une seule pile active à un moment, le système d'exploitation peut le faire apparaître comme si il y a plusieurs piles. Au moins l'un pour l'OS, un pour chaque processus, et une pour chaque thread. En fait, les fils eux-mêmes peuvent mettre en œuvre plusieurs piles.
À un niveau plus élevé, quelle que soit la langue utilisée pour mettre en œuvre un thread va souvent utiliser la pile pour ses propres fins, pour stocker fonctionnel paramètres d'appel, les variables locales et d'appel de fonction, les valeurs de retour (en parlant ici à grands traits -- consulter vos langues et de bas niveau de la documentation pour les détails précis).
Conclut donc mon bottom-up explication de la pile.
OriginalL'auteur
Dans les premiers jours de l'informatique, de la sous-routine appels ont été traités par avoir un mot de la mémoire RAM avec chaque sous-routine pour indiquer l'endroit où il a été appelé à partir. Pour appeler un sous-programme, on pourrait faire quelque chose comme:
Ce modèle peut être optimisé par l'appelant place l'adresse de retour dans un registre, et d'avoir la routine de la stocker dans le "retour" tache sur entrée. Ce modèle a fonctionné, mais il a eu quelques problèmes. Non seulement il l'a fait généralement la mémoire des déchets--il a également eu aucun moyen de traiter avec récursive ou de ré-entrant le code. L'ajout d'une pile de permis de simplifier le code en ayant l'appelant tout simplement dire "stocker l'adresse de retour dans un endroit approprié", sans perturber les précédentes, et pour la fonction appelée pour dire simplement "le retour à la plus récente de l'appelant qui n'a pas été retourné à encore". Cela a permis le développement de ré-entrant le code, et signifiait qu'il était seulement nécessaire de stocker suffisamment d'adresses de retour à la poignée la plus profonde imbriquée de la chaîne d'appels de fonction qui jamais réellement se produire.
L'objectif de la pile est d'améliorer une technologie existante qui, de fait, participé à des ordinateurs. Les Machines qui stockent les adresses de retour sans l'aide d'une pile ou d'attendre les programmeurs à faire de même pas courant pour une longue période de temps, mais de comprendre comment ils ont travaillé, est pertinente à la compréhension de ce qu'est une pile.
Probablement que je n'aurais pas dit une chose si ce n'est pour le mot "ancien". C'est subjectif, avec des connotations négatives. La technologie que vous décrivez est très basique et n'aurait existé dans les processeurs qui étaient à peine plus d'une calculatrice.
La technologie que je décris est, d'après ce que je comprends, le début compilateurs FORTRAN travaillé. Je ne voudrais pas raconter de ceux que "à peine plus d'une calculatrice". Bien que l'utilisation de sous-routine-les instructions d'appel est souvent plus efficace que de tenter de les renvoyer vecteur manuellement, la dernière approche peut encore fonctionner raisonnablement bien pour les langues qui ne supportent pas la récursivité.
Nous entrons dans une discussion et Stackoverflow n'est pas conçu pour cela. Je pense que nous devrions accepter d'être en désaccord. Je pense que les "anciens" est subjective et Stackoverflow n'est pas conçu pour subjective de la discussion. Afin de répondre mais vous voulez la réponse, mais ne supposez pas que je suis d'accord avec elle si je ne réponds pas.
OriginalL'auteur
Cela dépend du microprocesseur. En général, son rôle est de garder les variables locales et fonctions des paramètres.
Et effectivement il n'est pas dans le microprocesseur, c'est dans la mémoire centrale.
Eh bien, il a dit "de la pile dans un microprocesseur," donc, je suppose que c'est une utile clarification.
La pile peut avoir un rôle dans un microprocesseur sans être dans le microprocesseur. Par exemple, l'a7 est le pointeur de pile dans un 68000, de sorte que vous pouvez certainement dire que la pile joue un rôle dans le microprocesseur sans la pile de la mémoire physiquement résidant dans le microprocesseur.
OriginalL'auteur
Pile est utilisée pour de stocker et de récupérer des adresses de retour pendant les appels de fonction. Son utilisation à bon escient lors des appels de fonctions imbriquées ou récursive des appels de fonction. Il est également utilisé pour transfert des arguments à une fonction.
Sur un microprocesseur, il est également utilisé pour stocker le statut le contenu d'un registre avant un changement de contexte.
acclamations
OriginalL'auteur
Certains microprocesseurs ont pile de registres pour améliorer l'efficacité, jetez un oeil à la SPARC article dans wikipédia; d'autres ont un microstack pour la microroutines... C'est un terme assez large, en fait.
OriginalL'auteur
http://www.hobbyprojects.com/microprocessor_systems/images/stack.gif
La pile est un magasin de stockage temporaire de données.
L'UC peut POUSSER les données importantes sur la pile, tandis que c'est le traitement d'autres données.
Lorsqu'il a terminé cette tâche, il extrait les données enregistrées hors de la pile.
Sa comme une pile d'assiettes.
La plaque de fond est le premier bit de données qui a été poussé sur la pile.
La plaque supérieure est le dernier à être poussé.
La plaque supérieure est tiré de la première et de la plaque de fond est le dernier à être tiré.
Il est un DERNIER entré, PREMIER SORTI de la pile.
Dans les diagrammes, X est le premier à être enfoncé, puis Y et enfin A.
La CPU s'en va pour le traitement d'autres données.
À l'achèvement de cette tâche, il retourne à tirer les données sauvegardées.
D'abord Un est tiré, puis Y et X. enfin
L'instruction pour l'envoi de données est de PHA.
Seules les données dans l'accumulateur peut être poussé sur la pile.
D'autres données peuvent être poussés si elle est transférée à l'accumulateur d'abord.
L'instruction pour l'extraction de données à partir de la pile est PLA.
Les données sur la pile est transféré à l'accumulateur.
Le 6502 pile se compose de 256 octets et occupe la page 1, les adresses de 256 à 511.
OriginalL'auteur
Juste pour ajouter à certaines de ces réponses, certains bas de gamme de micros comme le PIC de ligne ont une matériel de la pile, ce qui signifie qu'il ne peut être alloué dynamiquement comme il est dans le matériel.
Les implications de tout ceci que vous ne pouvez aller à de nombreux appels de la fonction profonde, avant d'exécuter hors de la pile; c'est le cas de logiciels aussi bien sûr, mais souvent le matériel en fonction de la pile peut être très limitée, et peut vous obliger à repenser votre programme, pour "aplatir" hors de vos appels de fonction.
OriginalL'auteur
Une pile est une implémentation de la méthode LIFO (Last In - First Out) de la mémoire tampon. Le FIFO (First In - First Out) est également connu comme une file d'attente. Mais pour en revenir à la méthode LIFO.
Piles dans l'architecture x86 permettre à des concepteurs de logiciels de renoncer à ces choses étranges que l'adresse de retour des registres et de l'interruption de l'adresse de retour registres que l'on retrouve dans les processeurs RISC. Tout peut résider sur la pile, ce qui signifie qu'il existe un unique standardisé et de la méthode unifiée de la gestion des appels/des retours, des paramètres ou des variables locales et des interruptions interruption renvoie. L'utilisation de la méthode sur des piles simplifie la mise en œuvre de multi-threading.
RISC, en revanche, utilise une pile comme tampon si ils gardent significatnt pièces de l'info ailleurs. RISC "piles" peut être plus rapide (pas sûr), mais ils sont certainement la plus difficile à comprendre que ceux du x86.
OriginalL'auteur
Fait pile n'est pas un teminology pour le processeur, il est utilisé pour la langue de l'appel de routine. Une routine peut utiliser la pile pour obtenir les paramètres et enregistrer les variables locales, aussi appel à d'autres routines.
Cdci processeur comme Intel fournit push/pop instructions de montage explicitement le soutien de la pile de l'opération, a aussi le registre sp; mais d'autres processeur risc comme MIPS ne fournit pas de push/pop instruction pour la pile de fonctionnement, absence de registre sp specifiied. Mais ils peuvent tous être utilisés pour la mise en œuvre de la pile, mais je pense vraiment que la pile est un concept dans la langue, comme en c, comme java. Vous pouvez écrire assemblée pour le processeur sans stck nécessaire à tous.
Ce que je vois quand je regarde MIPS est pile, pile, pile. en.wikibooks.org/wiki/MIPS_Assembly/Subroutines
c'est une sorte de programmation de vue, bien sûr, vous pouvez utiliser l'assemblée pour mettre en œuvre la pile, mais il ne signifie pas que la pile est pour le processeur. La pile est de la langue de l'appel de routine. Processeur lui-même il suffit de prendre la charge de saut/branche/excution/charger/enregistrer chose.
OriginalL'auteur