Existe-t-il un processeur qui effectue des opérations arithmétiques sur une pile et non sur des registres? Pour conserver les performances, bien sûr, ce processeur doit mettre en cache le bloc supérieur d'une pile dans le même type de mémoire que celui utilisé pour les registres.
J'ai lu dans un article (David R. Ditzel, HR McLellan. Allocation des registres gratuitement: le cache de la pile de la machine C.) qu'un cache est plus lent 2 fois que les registres en raison de:
- adressage indirect lors de chaque accès au cache;
- cache manque quand la pile grandit.
Le papier est vieux. Peut-être que des améliorations de la conception du processeur sont apparues qui rendent le cache de pile viable? Je pense que cela réduira la complexité des compilateurs et optimisera la copie entre les registres et le reste de la mémoire.
Mise à jour du 18/10/2012. Parce que ce concept était bien connu (pas de moi), je change la question en "… Processeurs modernes?"
Mise à jour du 18/10/2012. Je sens que je dois dire explicitement que je ne parle pas de «machine à adresse zéro». La mise en cache et «adresse zéro» sont orthogonales. Mon processeur hypothétique peut même avoir une addition 5-aire comme «r3: = r0 + r2 + r11 + r5 + r8». «R n» signifie la cellule mémoire à sp + n, où sp est un pointeur de pile. sp change avant et après un bloc de code. Un programme très inhabituel change sp à chaque opération arithmétique.