COMPASS , COMP rehensive CULO Embler , [1] es cualquiera de una familia de macro lenguajes ensambladores de Control Data Corporation 's 3000 series , y en las de 60 bits CDC 6000 series , 7600 y Ciber 70 y 170 series de ordenadores centrales . Si bien las arquitecturas son muy diferentes, las instalaciones de ensamblaje macro y condicional son similares.
BRÚJULA para máquinas de 60 bits
Hay dos versiones de COMPASS en las máquinas de 60 bits:
- COMPASS CP es el lenguaje ensamblador del CP (Central Processor), el procesador que ejecuta programas de usuario. Consulte la arquitectura CDC 6600 CP .
- COMPASS PP es el lenguaje ensamblador para PP (Procesador periférico), solo ejecuta el código del sistema operativo . Ver arquitectura CDC 6600 PP .
COMPASS es un ensamblador clásico de dos pasos con características de ensamblaje macro y condicional, y genera una lista completa que muestra tanto el código ensamblador fuente como el código de máquina generado (en octal ). Los sistemas operativos de los CDC se escribieron casi en su totalidad en lenguaje ensamblador COMPASS.
El hardware del procesador central (CP o CPU) mantiene 24 registros operativos , denominados A0 a A7, X0 a X7 y B0 a B7. Los registros X0 a X7 tienen una longitud de 60 bits y se utilizan para almacenar datos, mientras que los registros B0 a B7 tienen una longitud de 18 bits y su propósito principal es contener direcciones o usarse como registros de indexación , excepto que B0 siempre es cero. Como convención de programación, B1 (o B7) a menudo contiene 1 positivo.
Los registros A o de direcciones también tienen una longitud de 18 bits. Cada registro A se empareja con el registro X correspondiente. Siempre que se establece una dirección en cualquiera de los registros A1 a A5, los datos en esa ubicación de memoria (dirección) se cargan en el registro X correspondiente. Asimismo, la configuración de una dirección en uno de los registros A6 o A7 almacena los datos almacenados en el registro X6 o X7 correspondiente en esa ubicación de memoria. Sin embargo, A0 puede usarse para contener cualquier dirección sin afectar el contenido del registro X0.
Las instrucciones CP están escritas en una forma particularmente fácil de usar: "SA1 A0 + B1" denota el registro de direcciones establecido A1 a la suma del registro de direcciones A0 y el registro de índice B1 . Luego, el hardware inicia una carga de memoria desde la dirección calculada al registro X1.
Las instrucciones del procesador periférico (PP o PPU) son completamente diferentes de las instrucciones de la CPU. El hardware del procesador periférico es más simple; tiene un registro A ( acumulador) de 18 bits , un registro de dirección de programa de 12 bits, un registro Q de 12 bits (no visible para el programador) y un registro R de 22 bits (utilizado para lograr la reubicación de direcciones durante la lectura y escribir instrucciones en los sistemas Cyber 180 ) No se requirió una validación de trabajo especial para ensamblar programas de procesador periférico, pero para ser ejecutados, tales programas debían instalarse en el sistema operativo mediante comandos especiales de edición del sistema.
Código de ejemplo
Este código de muestra de COMPASS muestra el calendario del año dado como parámetro en el terminal . Si no se proporciona ningún parámetro, se muestra el calendario del año actual.
Otras lecturas
- "Programación en lenguaje ensamblador para la serie Control Data 6000" por Ralph Grishman, Algorithmics Press, 1972. [2]