stringtranslate.com

Salto de ruedas

El Wheeler Jump es un tipo de metodología de llamada a subrutina que se utilizó en algunas de las primeras computadoras 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 máquina pionera EDSAC en la década de 1950. [1] EDSAC no se había construido con subrutinas en mente 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 fue 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 "saltar a esta dirección", que normalmente estaría seguida de una ubicación de memoria. En una subrutina de Wheeler, esta dirección normalmente se configuraba en un número ficticio, por ejemplo 0.

Para llamar a la rutina, la dirección del invocador se colocaría en el acumulador y luego el código saltaría al punto de inicio de la rutina. Las primeras instrucciones de la rutina calcularían la dirección de retorno en función del valor del acumulador, normalmente la siguiente ubicación de memoria, por lo que bastaría con un incremento, y luego escribirían el resultado en la dirección ficticia previamente reservada. Cuando la rutina sigue su curso, llega naturalmente al final de la rutina, que ahora dice "saltar a la dirección de retorno".

Como escribir en la 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 acumulador orientada a bytes con un solo registro, A:

'prepárese para llamar a la subrutina10 COPIAR PC A A ' copia el contador de programa (10) en el acumulador11 SALTAR ' saltar a...12 70'...ubicación 70...muchas líneas más...70 ADD CONST ' agrega el siguiente valor al acumulador...71 3' ... tres ubicaciones más allá del valor de PC original72 STORE ' almacena el valor en el acumulador para...73 91 '... la ubicación de memoria reservada...líneas que ejecutan la subrutina real...90 SALTO ' volver a...91 0'... que será reemplazado por 13

Cuando se completa este código, 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 sobre arquitectura informática. Gulf Professional Publishing. pág. 3. ISBN 9781558605398.
  2. ^ Prof. David Brailsford, Sean Riley (6 de febrero de 2018). The Wheeler Jump. Computerphile; Facultad de Ciencias de la Computación, Universidad de Nottingham, Reino Unido . Consultado el 30 de marzo de 2023 .