Je me prépare à certains matériaux de formation en C et je veux que mes exemples d’ajuster le modèle de pile typique.
Ce que la direction pousse une pile C sous Linux, Windows, Mac OSX (PPC et x86), Solaris et les plus récents systèmes Unix ?
Je me prépare à certains matériaux de formation en C et je veux que mes exemples d’ajuster le modèle de pile typique.
Ce que la direction pousse une pile C sous Linux, Windows, Mac OSX (PPC et x86), Solaris et les plus récents systèmes Unix ?
Croissance de la pile n'a pas l'habitude dépendent du système d'exploitation lui-même, mais sur le processeur, c'est en cours d'exécution sur. Solaris, par exemple, fonctionne sur x86 et SPARC. Mac OSX (comme vous l'avez mentionné) fonctionne sur PPC et x86. Linux fonctionne sur tout, de mon grand honkin' System z au travail pour un peu chétifs montre-bracelet.
Les processeurs et leurs sens sont:
x86 down
SPARC in a circle, very clever architecture, see below.
PPC down, I think.
System z in a linked list, I kid you not.
(but still down, at least for zLinux).
ARM selectable (thanks, Michael Burr).
Mostek6502 down (but only 256 bytes).
RCA1802A any way you want, subject to SCRT implementation.
PDP11 down.
Montrant mon âge sur ces derniers, l'1802 a été la puce utilisée pour contrôler le début des navettes (détection si les portes étaient ouvertes, je le soupçonne, basé sur la puissance de traitement qu'il avait :-) et mon deuxième ordinateur, le port COMX-35 (à la suite de mon ZX80).
En aparté:
PDP11 détails glanés partir d' ici.
L'architecture SPARC, par ailleurs, est un exemple d'une étrange architecture de pile - c'est un tampon circulaire avec une fenêtre coulissante, donnant une profondeur limitée de la pile. Voir ici pour plus de détails.
Le cadre de la SCRT technique est un autre - l'1802 utilisé une partie ou il est seize registres 16 bits pour les SCRT (standard d'appel et de retour de la technique). L'un était le compteur de programme, vous pouvez utiliser n'importe quel registre du PC avec l' SEP Rn
enseignement. L'un est le pointeur de pile et les deux étaient toujours à la point de la SCRT adresse de code, un appel, un pour le retour. Pas de registre a été traité d'une manière spéciale. Gardez à l'esprit que ces détails sont à partir de la mémoire, ils peuvent ne pas être tout à fait correcte.
Par exemple, si R3 est le PC, R4 a la SCRT adresse d'appel, R5 a été le SCRT adresse de retour et R2 est de la "pile" (entre guillemets, comme il est mis en œuvre dans le logiciel) SEP R4
aurait la valeur de R4 pour être le PC et commencer à courir le SCRT appel code.
Il serait alors magasin R2 R3 sur la "pile" (je pense que R6 a été utilisé pour le stockage temporaire), le réglage vers le haut ou vers le bas, prenez les deux octets suivants de R3, les charger dans R3, alors n' SEP R3
et être en cours d'exécution à la nouvelle adresse.
De retour, il pourrait SEP R5
qui permettrait de tirer le vieux adresse hors du R2 de la pile, y ajouter deux (pour sauter les octets d'adresse de l'appel), le charger dans R3 et SEP R3
pour démarrer l'exécution du code précédent.
Très difficile pour envelopper votre tête autour de initialement après tous les 6502/6809/z80 basée sur la pile de code mais toujours élégant dans un bang votre tête contre le mur. Aussi l'une des grandes caractéristiques de vente de la puce a 16 registres 16 bits, et vous avez immédiatement perdu 7 de ceux (5 pour SCRT, deux pour les DMA et les interruptions de la mémoire). Ahh, le triomphe du marketing sur la réalité.
Système z est en fait assez similaire, à l'aide de son R14 et R15 registres d'appel/retour.
En C++ (adaptable aux C) stack.cc:
L’avantage de plus en plus vers le bas est dans des systèmes plus anciens, que la pile a été généralement dans la partie supérieure de la mémoire. Mémoire généralement rempli de programmes à partir du bas donc ce genre de gestion de la mémoire réduit la nécessité de mesurer et de placer le bas de la pile quelque part sensible.
Elle pousse vers le bas parce que la mémoire allouée au programme a les « données permanentes » c'est-à-dire un code pour le programme lui-même à la partie inférieure, puis le tas au milieu. Vous avez besoin d’un autre point fixe permettant de faire référence à la pile, alors que les feuilles vous haut. Cela signifie que la pile se développe vers le bas, jusqu'à ce qu’il est potentiellement adjacent aux objets sur le tas.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.