COMPASS , COMP rehensive ASS embler , [1] es cualquiera de una familia de lenguajes ensambladores de macros para la serie 3000 de Control Data Corporation y para las computadoras mainframe de 60 bits de las series CDC 6000 , 7600 y Cyber 70 y 170. Si bien las arquitecturas son muy diferentes, las funciones de ensamblaje condicional y de macros son similares.
Hay dos versiones de COMPASS en las máquinas de 60 bits:
COMPASS es un ensamblador clásico de dos pasadas con funciones de ensamblaje macro y condicional, y genera un listado completo que muestra tanto el código fuente del ensamblador como el código de máquina generado (en octal ). Los sistemas operativos de CDC fueron escritos 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 60 bits de longitud y se utilizan para almacenar datos, mientras que los registros B0 a B7 tienen 18 bits de longitud y su propósito principal es almacenar 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 un 1 positivo.
Los registros A o de dirección 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. De la misma manera, al establecer una dirección en uno de los registros A6 o A7, se almacenan los datos guardados en el registro X6 o X7 correspondiente en esa ubicación de memoria. Sin embargo, A0 se puede utilizar para almacenar cualquier dirección sin afectar el contenido del registro X0.
Las instrucciones CP están escritas de una forma especialmente fácil de usar: "SA1 A0+B1" denota el registro de dirección A1 establecido en la suma del registro de dirección A0 y el registro de índice B1 . A continuación, 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 acumulador A 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 (usado para lograr la reubicación de direcciones durante las instrucciones de lectura y escritura de la memoria central en los sistemas Cyber 180 ). No se requería una validación de trabajo especial para ensamblar los programas del procesador periférico, pero para ejecutarse, dichos programas debían instalarse en el sistema operativo mediante comandos especiales de edición del sistema.