Par exemple, pour une UC 8 bits, la taille de la pile doit être de 8 bits, et la CPU de 16 bits contre la pile de 16 bits et la CPU 32 bits de 64 bits, etc. Est-ce vrai pour toutes les architectures?La largeur de la pile est-elle toujours la même que la taille du registre CPU?
Répondre
Une CPU possède un bus de données et un bus d'adresses. Les can peuvent avoir la même largeur, mais ils ne le sont souvent pas. Le pointeur de pile est un pointeur vers la mémoire, donc souvent aussi large que le bus d'adresse, à moins qu'une conversion (bizarre/obscure) ne soit utilisée en interne. Le pointeur d'instruction (pointe vers l'instruction en cours) est également un pointeur vers la mémoire et, en tant que tel, aussi large que le pointeur de la pile.
D'autres registres traitent principalement des données et, en tant que tels, ont les mêmes dimensions que le bus de données. Mais comme d'habitude, il y a des exceptions.
Pour prendre un vieil exemple. Le 6502. Un cpu de 8 bits (bus de données 8 bits, bus d'adresse 16 bits). Il a les registres (plus ou moins) généraux X et Y, et l '"accumulateur" appelé A. Tous les registres à 8 bits. Il y a un pointeur de pile et un pointeur d'instruction, le pointeur de pile ayant 8 bits explicites et 8 bits implicites (la pile est toujours dans la même région de 256 octets) et donc le registre pointeur de pile ayant 8 bits, le pointeur d'instruction ayant 16 bits.
Le 8086 dispose d'un bus de données de 16 bits et d'un bus d'adresse de 20 bits. Les registres généraux où 8 (et 16 bits). Le pointeur d'instruction et le pointeur d'empilement ont 16 bits, mais le segment utilisé enregistre (également 16 bits) pour obtenir l'adresse complète de 20 bits.
CPU 8 bits, la taille de la pile s'attendrait être largeur 8 bits
Vous pourriez vous attendre, mais vous auriez tort. L'utilisation de base de la pile est de stocker & récupérer les adresses de retour, et sur les processeurs de 8 bits, il s'agit en fait de valeurs de 16 bits. Par exemple, l'instruction Z80:
PUSH HL
pousse une valeur de 16 bits (les contenus des deux registres de 8 bits, H et L) dans la pile. Il n'y a pas d'instruction Z80 qui pousse une valeur de 8 bits.
La pile est vraiment juste un concept, et "largeur de pile" ne signifie vraiment rien. Vraisemblablement, vous voulez dire la largeur des éléments de la pile, mais vous pouvez généralement stocker des valeurs de taille arbitraires sur n'importe quelle pile (avec un peu de remplissage ou d'alignement), indépendamment de la largeur du bus ou de la taille du registre. Notez que les termes 8 bits, 16 bits, etc. sont un peu arbitraires et ne sont pas vraiment des définitions strictes, ce qui complique toute tentative de définition de "largeur".
Un point non encore mentionné est que certaines CPU (par exemple la famille PIC Microchip) ont une pile dédiée qui n'est pas accessible comme la RAM normale. Sur la série PIC16, la pile est liée exclusivement au compteur de programme, et la pile a (vraisemblablement) la même largeur que le compteur de programme. Sur la série PIC18, la pile et le compteur de programme ont tous deux une largeur de 21 bits; les 20 bits supérieurs peuvent être copiés vers ou depuis le compteur de programme; Le code peut également examiner l'élément de pile supérieur en tant que partie 5 bits et deux parties 8 bits.
- 1. VideoDisplay flex toujours être la même taille que le VideoDisplay
- 2. Enfants ayant la même largeur
- 3. Spécifier la largeur et la hauteur du tracé
- 4. div positionné avec largeur 100% est seulement aussi large que la taille de la fenêtre d'origine
- 5. Ne pas inclure la taille du composant dans la mesure
- 6. Modifier la largeur de MovieClip avec la taille du champ de texte dynamique à l'intérieur
- 7. qui est responsable de la détermination de la taille de la pile
- 8. Pourquoi la méthode visibleRect de CALayer me donne-t-elle toujours la même largeur pour mon UIImageView même si je la déplace à moitié hors de l'écran?
- 9. texte avec la même taille de la police ne regarde pas la même taille sur les différentes pages
- 10. Gestion de la mémoire DOM et de la CPU
- 11. jeu d'instructions JVM cycles CPU et la taille des octets
- 12. WPF/XAML - Mise à l'échelle de la taille du texte à la taille de la fenêtre
- 13. Obtenir la taille du contrôle automatique?
- 14. Comment modifier la taille du texte et la largeur des composants d'un UIPickerView?
- 15. Maintenir la même hauteur sur Modifier la taille (jQuery)
- 16. comparaison de la taille du code et de la taille de la source
- 17. La sortie de cryptage est toujours différente même avec la même clé
- 18. zend trace de la pile du framework
- 19. Détection de la taille du contenu du SWFLoader
- 20. redimensionner la largeur de jqgrid lors du redimensionnement du navigateur
- 21. Enregistrer et restaurer la position et la taille du formulaire
- 22. CSS ajuster la taille de la table
- 23. Comment calculer la taille d'un UIFont lorsque le texte de l'étiquette est contraint à la largeur?
- 24. Comment calculer la largeur de la police?
- 25. Afficher la trace de la pile DNN?
- 26. Comment trouver la taille de la mémoire virtuelle et la taille du cache d'un système Linux?
- 27. Modifications dynamiques de la taille de la pile de threads dans Solaris 9?
- 28. Limiter la largeur de la table
- 29. Vérifiez la taille de la file d'attente RabbitMQ du client
- 30. Silverlight: Restreindre la largeur de RowDetailsTemplate à la largeur du parent DataGrid
Ceci est un peu comme l'affirmation "tous les cygnes sont blancs" – skaffman
Qu'entendez-vous par "largeur de pile"? – starblue
Je suppose que la largeur de pile fait référence à l'intervalle minimum de points de mémoire adressables.Par exemple, si vous pouvez stocker un minimum de deux octets à la fois dans la pile, vous diriez que la largeur de la pile est de 16 bits? –