Register

Die Wortlänge betrug 16-Bit, davon standen 15-Bit für Daten (inkl. 1-Bit für Vorzeichen) zur Verfügung, 1 Bit diente als Prüfbit.

P 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Das „Hauptregister” für Berechnungen war der Akkumulator, der als einziges Register eine volle Länge von 16-Bit besaß. Für Berechnungen mit doppelter Genauigkeit wurde zusätzlich das L-Register verwendet. Das Instruktionsformat besteht aus einem 3-Bit-Opcode und einer 12-Bit-Adresse:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Die drei Bits für den Opcode würden nur 8 Instruktionen ermöglichen. Die Entwickler nutzten verschiedene Techniken, um den Vorrat an möglichen Instruktionen über diese 8 Möglichkeiten hinaus zu erweitern. Hierzu zählte das Memory-Management, das als Memory-Banking den Speicher in mehrere Bereiche (Bänke) aufteilte. So wurden z.B. die Bits 12 und 11 verwendet, um zwischen beschreibbaren Speicher und mehreren Bereichen des Festspeichers zu unterscheiden. Daraus wiederum ergab sich die Möglichkeit, diese Bits als zusätzliche Bits für Instruktionen zu verwenden, wenn von vornherein feststand, auf welchen Speicherbereich ein bestimmter Befehl zugriff. Das traf auf Befehle wie TS (Transfer to Storage) oder ADS (Add to Storage) zu, bei denen es sich um Befehle handelte, die in den beschreibbaren Speicher schreiben.

Befehlswort-Aufbau im AGC, Block II [HAL1996, 123]

Eine weitere Technik, die eingesetzt wurde, um den Befehlssatz zu erweitern, war es, einen zusätzlichen Satz an Opcodes bereitzustellen, der über eine spezielle Anweisung, EXTEND, angesprochen wurde. Vor einer dieser erweiterten Anweisungen musste also jeweils die EXTEND-Anweisung aufgerufen werden, was zusätzlichen Overhead bedeutete. Damit der Overhead nicht zu groß wurde, verteilten die Entwickler die einzelnen Instruktionen aufgrund deren Verwendungshäufigkeit zwischen den „normalen” und den „erweiterten” Anweisungen. Abbildung 1.4 (aus „Journey to the Moon”) zeigt den Aufbau eines Befehlswortes im AGC (Block II) zur Nutzung solcher erweiterten Befehlssätze.