Lenguaje ensamblador básico de IBM y sucesores


Lenguaje ensamblador básico ( BAL ) es el término comúnmente utilizado para un lenguaje de programación de bajo nivel utilizado en IBM System/360 y mainframes sucesores. Originalmente, el "Lenguaje ensamblador básico" se aplicaba solo a un dialecto extremadamente restringido diseñado para ejecutarse bajo el control del soporte de programación básica de IBM (BPS/360) en sistemas con solo 8 KB de memoria principal y solo un lector de tarjetas , un perforador de tarjetas y una impresora para entrada/salida , de ahí la palabra "básico". Sin embargo, el nombre completo y las iniciales "BAL" se incorporaron casi de inmediato en el uso popular a todos los dialectos del lenguaje ensamblador en System/360 y sus descendientes.BAL para BPS/360 se introdujo con elSistema/360 en 1964.

Los ensambladores en otros sistemas operativos System/360 a través de System/370 , System/390 y System z , así como los mainframes UNIVAC Serie 90 fabricados por Sperry Corporation , y los Mainframes BS2000 fabricados actualmente por Fujitsu , heredaron y ampliaron su sintaxis. El último lenguaje derivado se conoce como IBM High-Level Assembler (HLASM). Los programadores que utilizan esta familia de ensambladores también se refieren a ellos como ALC (para codificación en lenguaje ensamblador) o simplemente "ensamblador".

La arquitectura de los mainframes de IBM ha sufrido varias extensiones a lo largo de los años, incluidos System/360, System/370, System/370 XA, ESA/370, ESA/390 y z/Architecture . Cada una de estas arquitecturas ha conservado la compatibilidad con la mayoría de las funciones de su predecesor. BAL utiliza el conjunto de instrucciones nativas de estas máquinas. Por lo tanto, está más cerca del hardware que los lenguajes de tercera generación como COBOL .

La extrema simplicidad de estas operaciones significa que el código fuente de un programa escrito en ensamblador suele ser mucho más largo que un programa equivalente en, digamos, COBOL o Fortran . En el pasado, la velocidad de los programas ensambladores codificados a mano solía compensar este inconveniente, pero con la llegada de los compiladores optimizados, C para el mainframe y otros avances, el ensamblador ha perdido gran parte de su atractivo. Sin embargo, IBM continúa actualizando el ensamblador y todavía se usa cuando la necesidad de velocidad o control muy fino es primordial. Sin embargo, todos los sucesores de BAL de IBM han incluido una función de macros sofisticada que permite escribir un código fuente mucho más compacto.

Otra razón para usar ensamblador es que no se puede acceder a todas las funciones del sistema operativo en lenguajes de alto nivel. La interfaz del programa de aplicación de los sistemas operativos de mainframe se define como un conjunto de instrucciones de "macro" en lenguaje ensamblador, que normalmente invocan llamadas de supervisor (SVC) [en z/OS] o instrucciones de hardware de diagnóstico (DIAG) [en z/VM] para invocar rutinas del sistema operativo. Es posible utilizar los servicios del sistema operativo desde programas escritos en lenguajes de alto nivel mediante el uso de subrutinas ensambladoras.

El formato de las declaraciones en lenguaje ensamblador refleja el diseño de una tarjeta perforada de 80 columnas, aunque las versiones sucesivas han relajado la mayoría de las restricciones.