¿Hay un procesador que realice operaciones aritméticas en una pila y no en registros? Por supuesto, para mantener el rendimiento, ese procesador debe almacenar en la caché el bloque superior de una pila en el mismo tipo de memoria que se usa para los registros.
Leí en un artículo (David R. Ditzel, HR McLellan. Registrar asignación de forma gratuita: La Caché de C Machine Stack. ) que un caché es más lento 2 veces que los registros debido a:
- direccionamiento indirecto durante cada acceso al caché;
- falta de caché cuando la pila crece.
El papel es viejo. Tal vez, ¿aparecieron mejoras en el diseño del procesador que hacen que la pila de caché sea viable? Creo que reducirá la complejidad de los compiladores y optimizará la copia entre los registros y el resto de la memoria.
Actualización 2012-10-18. Debido a que este concepto era conocido (no para mí), cambio la pregunta a "... ¿Procesadores modernos?"
Actualización 2012-10-18. Siento que debo decir explícitamente que no estoy hablando de "máquina de dirección cero". El almacenamiento en caché y la "dirección cero" son ortogonales. Mi hipotético procesador puede tener incluso una adición de 5 arias como "r3: = r0 + r2 + r11 + r5 + r8". “R n” significa la celda de memoria en sp + n, donde sp es un puntero de pila. sp cambia antes y después de un bloque de código. Un programa muy inusual cambia sp en cada operación aritmética.