Ensamblador de datos de Norsk


De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

MAC era un ensamblador de macros para computadoras de las líneas NORD-1 , NORD-10 y ND-100 de Norsk Data .

Limitaciones

El ensamblador tuvo varios inconvenientes que hoy se considerarían exóticos o extraños.

Longitud del identificador

Como muchos ensambladores, MAC colocó un límite en la longitud de los nombres de las variables, sin embargo, en lugar de simplemente rechazar nombres mayores que la longitud máxima, solo mantuvo las últimas cinco letras de un identificador , ignorando la primera parte del nombre. La razón para mantener los últimos 5 fue para que las variables como MY_ARRAY1 y MY_ARRAY2 fueran distinguibles. El resultado fue que el almacenamiento interno de algunos nombres era muy extraño y, en ocasiones, difícil de entender, ya que los nombres serían idénticos a nombres como RRAY1 y RRAY2 respectivamente. Este comportamiento hizo que algunos programadores adoptaran la práctica de escribir solo las últimas cinco letras de un nombre en el código de su programa.ya que el ensamblador ignoraría el resto de todos modos. Debido a la dificultad que enfrenta un lector humano para comprender lo que significa el nombre, el código se volvió mucho más difícil de entender. Esto resultó en una menor reutilización de código en el sistema.

Traducción a código de máquina

Otra peculiaridad era que el ensamblador trabajaba sumando los "valores" de todos los símbolos en una instrucción para formar el código de máquina real. Por ejemplo, para copiar el contenido del registro X al registro A, escribiría:

COPIA SX DA

Internamente, el ensamblador tenía un valor numérico para "COPY", otro valor para "SX" y un tercer valor para "DA". Al sumarlos, se obtuvo la instrucción real de la máquina. Sin embargo, si el programador cometió un error y escribió (observe que ambos registros son registros "fuente"):

COPY SX SA

la máquina no haría lo que realmente pretendía el programador, ni arrojaría un error. En cambio, el ensamblador aceptaría el programa pero no se traduciría en una instrucción COPY. La parte SX + SA probablemente resultaría en el valor de algún tercer registro o se desbordaría de modo que la parte de operación de la instrucción se modificó y la cambiaría de copia a alguna otra operación no intencionada.

Biblioteca de llamadas estándar

Otro problema para los programadores en ensamblador en general es la lista de las llamadas llamadas de monitor (MON). La instrucción MON es equivalente a la instrucción INT que se encuentra en las CPU Intel . Sin embargo, aunque originalmente tenían un buen conjunto de funciones para escribir en un archivo, leer de un archivo, etc .; rápidamente se convirtió en un conjunto de funciones ad hoc . Un ejemplo es una función diseñada originalmente para generar 8 bytes almacenados en 4 de los registros (A, D, T y X). Pronto alguien, que tenía los bytes en algunos otros registros, creó una nueva función para generar la salida de esos registros. Esto dejó al programador con un verdadero bosque de funciones de salida, todas haciendo casi lo mismo. En los últimos días de SINTRANel problema entonces era encontrar códigos disponibles para estas llamadas al sistema, ya que los 256 de ellos ya habían sido tomados por varias funciones casi idénticas. Por lo tanto, las llamadas de monitor multifunción extendidas entraron en la escena donde una llamada de monitor podría realizar una serie de funciones con un código de función especificado en un registro que indica cuál de sus subrutinas se ejecutaría.