Articulo de referencia

Salto de Wheeler

El salto de Wheeler es un tipo de metodología de llamada a subrutina que se utilizó en algunas computadoras antiguas que carecían de soporte de hardware para guardar la direcció...

El salto de Wheeler es un tipo de metodología de llamada a subrutina que se utilizó en algunas computadoras antiguas que carecían de soporte de hardware para guardar la dirección de retorno. El concepto fue desarrollado por David Wheeler mientras trabajaba en la pionera máquina EDSAC en la década de 1950. [ 1 ] EDSAC no había sido construida pensando en las subrutinas y carecía de un registro de procesador adecuado o una pila de hardware que permitiera almacenar fácilmente la dirección de retorno.

La solución de Wheeler consistía en una forma particular de escribir el código de la subrutina. Para implementarla, la última línea de la subrutina era una instrucción de "salto a esta dirección", que normalmente iría seguida de una ubicación de memoria. En una subrutina de Wheeler, esta dirección normalmente se establecía con un número ficticio, por ejemplo, 0.

Para llamar a la rutina, la dirección del llamador se coloca en el acumulador y luego el código salta al punto de inicio de la rutina. Las primeras instrucciones de la rutina calculan la dirección de retorno basándose en el valor del acumulador, normalmente la siguiente ubicación de memoria, por lo que un incremento es suficiente, y luego escriben el resultado en la dirección ficticia previamente reservada. Cuando la rutina se ejecuta, llega naturalmente a su final, que ahora indica "saltar a la dirección de retorno".

Como la escritura en memoria es un proceso lento en comparación con el acceso a registros, esta metodología no es particularmente rápida. Tampoco es capaz de expresar recursión . [ 2 ] La adición de nuevos registros para este tipo de tarea fue un objetivo de diseño clave de EDSAC 2 .

Ejemplo

Este ejemplo demuestra la técnica utilizando un lenguaje pseudoensamblador para una máquina simple basada en un acumulador orientado a bytes con un solo registro, A:

'prepárese para llamar a la subrutina 10 COPIAR PC A ' copia el contador de programa (10) en el acumulador 11 SALTO ' salta a... 12 70 ' ... ubicación 70 ... muchas más líneas... 70 ADD CONST ' agrega el siguiente valor al acumulador... 71 3 ' ... tres ubicaciones más allá del valor original de la PC 72 ALMACENAR ' almacenar el valor en el acumulador para... 73 91 ' ... la ubicación de memoria reservada ... líneas que ejecutan la subrutina propiamente dicha... 90 SALTO ' regresar a... 91 0 ' ... que será reemplazado por 13

Cuando este código finalice, la instrucción JUMP en la dirección 90 regresará naturalmente a la ubicación 13, la siguiente instrucción después de la subrutina.

Referencias

  1. Hill, Mark (2000). Lecturas en arquitectura de computadoras . Gulf Professional Publishing. pág.  3. ISBN 9781558605398.
  2. Prof. David Brailsford, Sean Riley (6 de febrero de 2018). El salto de Wheeler . Computerphile; Escuela de Ciencias de la Computación, Universidad de Nottingham, Reino Unido . Recuperado el 30 de marzo de 2023 .