Символическая оптимальная программа сборки
Программа символической оптимальной сборки (SOAP) — это ассемблер для IBM 650 машины обработки данных с магнитным барабаном , раннего компьютера , впервые использованного в 1954 году. Она была разработана Стэном Поли в Исследовательском центре IBM Томаса Дж. Уотсона . [1] SOAP называется «оптимальным» (или «оптимальным»), поскольку он пытается сохранить сгенерированные инструкции на барабане хранения , чтобы минимизировать время доступа от одной инструкции к другой. SOAP — это многопроходный ассемблер, то есть он обрабатывает исходную программу более одного раза, чтобы сгенерировать объектную программу .
На смену первой версии SOAP пришла SOAP II в 1957 году. [2] который поддерживал дополнительные аппаратные функции, такие как индексные регистры и память на магнитных сердечниках , затем SOAP IIA в 1958 году, [3] SOAP 2L, лента SOAP 2L, SOAP 4000 и SOAP 42 в 1961 году. [4] SOAP использовался в качестве серверной части компилятора FOR TRANSIT в 1957 году. [1]
Дональд Кнут независимо произвел версии под названием SOAP III в 1958 году. [5] и СУПЕРМЫЛО в 1959 году. [6] в Технологическом институте Кейса, который сейчас является частью Университета Кейс Вестерн Резерв в Кливленде, штат Огайо . США Национальное бюро стандартов под руководством Герберта Хоу также написало версию SOAP под названием ISOPAR, которая, как утверждается, значительно улучшает оптимизацию. [7]
Оптимизация
[ редактировать ]IBM 650 использует магнитный барабан в качестве основного хранилища. Барабан вмещает до 4000 слов и вращается со скоростью 12 500 оборотов в минуту (об/мин), 4,8 мс на оборот, или среднее время доступа 2,4 мс. «Если вы разместите инструкции на барабане последовательно, вам придется дождаться полного вращения барабана, прежде чем ЦП сможет получить следующую инструкцию. Поскольку многие инструкции на 650 могут выполняться примерно за 3 миллисекунды, вы должны попытаться оптимизировать свой код, размещая инструкции на барабане таким образом, чтобы барабану не требовался полный оборот для доступа к следующей инструкции». [8] Каждая инструкция содержит адрес следующей инструкции для выполнения; вместо последовательного массива инструкций память представляет собой связанный список. SOAP оптимизируется путем размещения инструкций, которые должны выполняться последовательно, в местах вокруг барабана, так что следующая инструкция становится доступной как можно скорее после завершения текущей инструкции. Утверждалось, что эта оптимизация позволила собранным программам «работать в шесть или семь раз быстрее». [1]
SOAP-функции
[ редактировать ]Псевдооперации
[ редактировать ]SOAP II поддерживает следующие псевдооперации (директивы сборки): [2]
НА | Имя | Описание |
---|---|---|
ХЭД | Заголовок | Отдельные программы, возможно, написанные отдельно, которые собираются вместе. В этом разделе можно указать символ, который будет добавлен к именам символов, чтобы избежать конфликтов имен. |
РЭЛ | Программа передвижной библиотеки | Определяет начало перемещаемой библиотечной программы, которая собирается перед основной программой. Он определяет величину, на которую должны быть перемещены собранные адреса. |
РБР | Резервирование перемещаемого блока | Резервирует ряд местоположений барабана как «стираемые блоки в рамках процедуры», чтобы избежать использования нескольких карточек для указания области данных. |
ЗАПРОС | Перемещаемая эквивалентность | Приравнивает символ к адресу перемещаемой подпрограммы и дополнительно указывает величину перемещения. |
БЛР | Блокировать резервирование | Помечает диапазон адресов барабанов как недоступный для назначения по протоколу SOAP. |
БЛА | Блокировать доступность | Помечает диапазон адресов барабанов как доступный для назначения. |
РЕГ | Региональная спецификация | Определяет диапазон адресов барабанов как «регион», идентифицируемый односимвольным идентификатором региона . Местоположение внутри региона указывается как <идентификатор региона>nnnn, где nnnn — число от 1 до количества местоположений, указанного для региона. |
Альф | Алфавитные данные | Указывает до пяти буквенных символов, которые будут собраны в указанном месте. |
ПАТ | Стол для сборки пуансона | Приказывает SOAP пробить колоду из пятидесяти карточек типа Y со списком использованных и доступных мест расположения барабанов на любом этапе сборки. Эту таблицу можно просмотреть вручную и передать обратно в SOAP при последующей сборке, чтобы восстановить «состояние доступности, которое существовало в какой-то момент предыдущей сборки». |
ПБ | Начало программы | Указывает на начало новой программы, которая будет собрана отдельно от предыдущих программ в той же колоде карт. |
ЭКВ | Эквивалентность | Приравнивает символ к абсолютному, региональному или символическому значению. |
СИН | Синоним | Приравнивает символ к абсолютному адресу барабана. Адрес помечен как недоступный для присвоения |
Комментарии
[ редактировать ]Каждая исходная карточка может содержать до десяти символов комментариев в столбцах 63–72. Для более длинных комментариев в карточке комментариев можно ввести до тридцати символов ( тип 1 , «1» в столбце 41) в столбцах 43–72.
Ссылки
[ редактировать ]- ^ Jump up to: а б с Лоренцо, Марк Джонс (2019). История языка программирования Фортран . п. 162. ИСБН 9781082395949 . Проверено 28 сентября 2020 г.
- ^ Jump up to: а б Корпорация IBM (1957). SOAP II для системы обработки данных IBM 650 (PDF) . Проверено 27 сентября 2020 г.
- ^ Корпорация IBM (1958). Бюллетень системы обработки данных IBM 650 . Проверено 27 сентября 2020 г. }
- ^ Корпорация IBM (1961). SOAP 2L, лента SOAP 2L, SOAP 4000 и SOAP 42 (PDF) . Проверено 27 сентября 2020 г.
- ^ «МЫЛО III» . Интернет-историческая энциклопедия языков программирования . Проверено 27 сентября 2020 г.
- ^ Кнут, Дональд Э. (1959). Система сборки SUPERSOAP для Augmented 650 (PDF) . Проверено 27 сентября 2020 г.
- ^ Хау, Герберт. ISOPAR: новая и улучшенная программа символьной оптимизации сборки для IBM 650 (PDF) . Проверено 28 сентября 2020 г.
- ^ Кугель, Херб (22 октября 2001 г.). «ИБМ 650» . Доктор Добб . Проверено 28 сентября 2020 г.