2010-04-23 6 views

Répondre

0

Si votre microprocesseur a plus d'une pile matérielle, alors oui, vous pouvez. Vous devrez cependant écrire l'assembleur, car aucune implémentation c/C++ n'utilise plusieurs piles.

Il serait plus facile de vous aider si vous pouviez dire exactement de quelle architecture vous parlez.

1

Bien sûr, vous pouvez. Plusieurs architectures de CPU ont plusieurs pointeurs de pile - même des processeurs 8 bits simples, tels que le M6809. Et même si le concept n'est pas implémenté dans le matériel du CPU, vous pouvez facilement créer plusieurs piles dans le logiciel. Un pointeur de pile est simplement un registre d'index, donc vous pouvez (par exemple) utiliser les registres IX et IY du Z80 pour implémenter plusieurs piles.

+0

Mais un seul est généralement disponible pour utiliser le code, et certainement un seul est utilisé par le code compilé. L'autre est pour les interruptions. – James

+1

@Auto Pas dans le 6809, dont j'ai une vaste expérience de la programmation. Les deux sont disponibles à partir du code utilisateur. –

0

En ce qui concerne le comment. Généralement, il y a un registre spécial ou un emplacement de mémoire qui est utilisé pour pointer vers la pile. Utiliser une autre pile est aussi simple que de définir cette valeur. Tout dépend du processeur et de l'architecture, cela dépend donc de celui que vous utilisez.

0

Sur certaines plateformes, la pile utilisée pour les adresses de retour est entièrement distincte de celle utilisée pour le passage de paramètres. En effet, sur certaines plateformes, les compilateurs C n'autorisent pas la récursivité et n'utilisent aucune pile pour le passage de paramètres. Franchement, j'aime ces conceptions, car elles minimisent la probabilité de problèmes de pile provoquant un comportement de programme errant.