Programa de ensamblaje óptimo simbólico

Ensamblador para la computadora IBM 650
Formulario de codificación SOAP II, 1957

El Programa de Ensamblaje Óptimo Simbólico (SOAP) es un ensamblador para la máquina de procesamiento de datos de tambor magnético IBM 650 , una de las primeras computadoras que se utilizó por primera vez en 1954. Fue desarrollado por Stan Poley en el Centro de Investigación Thomas J. Watson de IBM . [1] SOAP se llama "Óptimo" (u "Óptimo") porque intenta almacenar las instrucciones generadas en el tambor de almacenamiento para minimizar el tiempo de acceso de una instrucción a la siguiente. SOAP es un ensamblador de múltiples pasadas , es decir, procesa el programa fuente más de una vez para generar el programa objeto .

La primera versión de SOAP fue reemplazada por SOAP II en 1957, [2] que admitía características de hardware adicionales como registros de índice y memoria de núcleo magnético , luego SOAP IIA en 1958, [3] SOAP 2L, SOAP 2L Tape, SOAP 4000 y SOAP 42 en 1961. [4] SOAP se utilizó como backend del compilador FOR TRANSIT en 1957. [1]

Donald Knuth produjo de forma independiente versiones denominadas SOAP III en 1958 [5] y SUPERSOAP en 1959 [6] en el Instituto de Tecnología Case, ahora parte de la Universidad Case Western Reserve en Cleveland, Ohio . La Oficina Nacional de Normas de los EE. UU. , bajo la dirección de Herbert Howe, también escribió una versión de SOAP, llamada ISOPAR, que se dice que mejora significativamente la optimización. [7]

Mejoramiento

El IBM 650 utiliza un tambor magnético como almacenamiento principal. El tambor tiene capacidad para 4.000 palabras y gira a 12.500 revoluciones por minuto (RPM), 4,8 mseg por rotación o un tiempo de acceso medio de 2,4 mseg. "Si colocara sus instrucciones secuencialmente en el tambor, tendría que esperar a que el tambor girara por completo antes de que la CPU pudiera obtener la siguiente instrucción. Dado que muchas instrucciones del 650 podrían ejecutarse en unos 3 milisegundos, intentaría optimizar su código colocando las instrucciones en el tambor de forma que no necesitara una revolución completa para acceder a la siguiente instrucción". [8] Cada instrucción contiene la dirección de la siguiente instrucción a ejecutar; en lugar de una matriz secuencial de instrucciones, la memoria parece ser una lista enlazada. SOAP optimiza colocando las instrucciones que se ejecutarán secuencialmente en ubicaciones alrededor del tambor de forma que la siguiente instrucción esté disponible lo antes posible después de que finalice la instrucción actual. Se decía que esta optimización hacía que los programas ensamblados "funcionaran hasta seis o siete veces más rápido". [1]

Características de SOAP

Pseudooperaciones

SOAP II admite las siguientes pseudooperaciones (directivas de ensamblaje): [2]

Pseudooperaciones SOAP II
De acuerdoNombreDescripción
EnfermoTítuloSepara programas, posiblemente escritos por separado, que se están ensamblando. Puede especificar un carácter que se agregará a los nombres de símbolos en esta sección para evitar conflictos de nombres.
RELPrograma de Bibliotecas ReubicablesDefine el inicio de un programa de biblioteca reubicable que se ensambla antes del programa principal. Especifica las cantidades en las que se deben reubicar las direcciones ensambladas.
RBRReserva de bloque reubicableReserva un rango de ubicaciones de tambores como "bloques borrables dentro de la rutina", para evitar usar varias tarjetas para especificar un área de datos.
REQUISITOSEquivalencia reubicableEquiparar un símbolo con la dirección de una subrutina reubicable y, opcionalmente, especificar una cantidad de reubicación.
BLRReserva de bloqueMarca un rango de direcciones de tambor como no disponibles para su asignación por SOAP.
BLADisponibilidad de bloqueMarca un rango de direcciones de tambor como disponibles para su asignación.
REGEspecificación regionalDefine un rango de direcciones de tambor como una "región", identificada por un identificador de región de un carácter . Las ubicaciones dentro de la región se especifican como <region id>nnnn, donde nnnn es un número entre 1 y la cantidad de ubicaciones especificadas para la región.
ALFDatos AlfabéticosEspecifica hasta cinco caracteres alfabéticos que se ensamblarán en la ubicación especificada.
PALMADITAMesa de montaje de punzonesIndica a SOAP que perfore una baraja de cincuenta tarjetas de tipo Y que incluya las ubicaciones de los tambores usados ​​y disponibles en cualquier momento durante el ensamblaje. Esta tabla se puede examinar manualmente y volver a introducir en SOAP en un ensamblaje posterior para restablecer "el estado de disponibilidad que existía en algún momento de un ensamblaje anterior".
GOLPEARInicio del programaIndica el inicio de un nuevo programa que se ensamblará por separado de los programas anteriores en la misma baraja de cartas.
EQUEquivalenciaEquiparar un símbolo a un valor absoluto, regional o simbólico.
SINÓNIMOSinónimoEquivale un símbolo a una dirección absoluta de tambor. La dirección está marcada como no disponible para asignación

Comentarios

Cada tarjeta de origen puede contener hasta diez caracteres de comentarios en las columnas 63 a 72. Para comentarios más largos, se pueden ingresar hasta treinta caracteres en una Tarjeta de comentarios ( Tipo 1 , '1' en la columna 41) en las columnas 43 a 72.

Referencias

  1. ^ abc Lorenzo, Mark Jones (2019). La historia del lenguaje de programación Fortran. p. 162. ISBN 9781082395949. Consultado el 28 de septiembre de 2020 .
  2. ^ ab IBM Corporation (1957). SOAP II para el sistema de procesamiento de datos IBM 650 (PDF) . Consultado el 27 de septiembre de 2020 .
  3. ^ IBM Corporation (1958). Boletín del sistema de procesamiento de datos IBM 650. Consultado el 27 de septiembre de 2020 .}
  4. ^ IBM Corporation (1961). SOAP 2L, SOAP 2L Tape, SOAP 4000 y SOAP 42 (PDF) . Consultado el 27 de septiembre de 2020 .
  5. ^ "SOAP III". Enciclopedia histórica en línea de lenguajes de programación . Consultado el 27 de septiembre de 2020 .
  6. ^ Knuth, Donald E. (1959). Sistema de ensamblaje SUPERSOAP para el 650 aumentado (PDF) . Consultado el 27 de septiembre de 2020 .
  7. ^ Howe, Herbert. ISOPAR: una nueva y mejorada rutina de optimización simbólica para el IBM 650 (PDF) . Consultado el 28 de septiembre de 2020 .
  8. ^ Kugel, Herb (22 de octubre de 2001). "El IBM 650". Dr. Dobb . Consultado el 28 de septiembre de 2020 .
  • SOAP en la Enciclopedia Histórica Online de Lenguajes de Programación


Retrieved from "https://en.wikipedia.org/w/index.php?title=Symbolic_Optimal_Assembly_Program&oldid=1220162411"