Cтраница 4
Рабочая память, необходимая для решения этих задач, представлена на рис. 8.3. Основной буфер команд и вспомогательный буфер команд имеют длину по 16 байтов каждый и используют ся для хранения предварительно выбранных команд. Регистр команд ( 4 байта) содержит команду во время ее декодирования; информация в него поступает из основного буфера команд Регистры очередей служат в качестве буфера команды перед ее пересылкой в исполнительное устройство. Командное устройство содержит также трехвходовый сумматор, служащий для выполнения операций адресной арифметики, четыре 24-битовых адресных регистра, инкрементную схему и схему декодирования команд. [46]
Третьим необычным приемом кодирования служат переменные х и у в процедуре swap. Как было замечено ранее, компилятор DECWRL выполняет очень строгую проверку указателей, которую нельзя выключить для встроенного типа ADDRESS. Мы вынуждены ввести новый тип wp с выключенной проверкой, однако, в отличие от типа ADDRESS тип wp не поддерживает адресную арифметику. [47]
Вообще говоря, для этих целей можно использовать числа типа F и операции над ними, однако в этом случае адресная арифметика реализовывалась бы недостаточно эффективно. Дело в том, что диапазон чисел, представимых по формату F, намного превышает потребности адресной арифметики. В младших моделях ЕС ЭВМ емкость оперативной памяти не превышала 215 32 768 байт, так что для изображения любого машинного адреса достаточно иметь 15 двоичных разрядов. В связи с этим в машине и предусмотрены короткие целые числа, каждое из которых представляется полусловом, и над такими числами предусмотрены отдельные операции арифметического типа, которые чаще всего встречаются в адресной арифметике. [48]