Шитый код

Материал из ПМК вики
Перейти к: навигация, поиск

Косвенный шитый код (англ. indirect-threaded code) имеет то преимущество, что его высокоуровневые подпрограммы не содержат машинных кодов (Баранов-Ноздрунов, стр. 47). Эта замечательная особенность косвенного шитого кода позволила реализовать Каллисто на «Электронике МК-161» — машине гарвардской архитектуры, которая не предусматривает исполнение кода языка МК из области данных.

Текстовый интерпретатор компилирует входной поток текста на языке Каллисто в шитый код, который потом исполняется адресным интерпретатором.

История[править]

Первые годы определения слов высокого уровня хранились в Форте в виде массива из укороченных имён слов, составлявших определение. Это приводило к большим накладным расходам, ведь при исполнении каждое слово искалось по своему имени в словаре.

Применённый в Каллисто косвенный шитый код впервые появился в Форте в 1970 году на IBM 1130, когда Форт был переделан из кросс-компилятора для терминала IBM 2250 в родную среду разработчика для IBM 1130. Тогда же в Форте появился словарь, связанный список статей, содержащих поле имени (счётчик и три первые буквы) и поле кода. Это произошло за пять лет до публикации работы Dewar по косвенному шитому коду в Communications of the ACM в 1975 году.

Косвенный шитый код был применён в 1971-73 годах, когда Чак Мур перенёс транслятор на DEC PDP-11 в National Radio Astronomy Observatory (англ., Шарлотсвилл). С тех лет разные варианты шитого кода применяются в подавляющем числе различных реализаций Форта.

Существуют реализации Форта, генерирующие при компиляции обычный машинный код, подобно компиляторам с обычных языков программирования. С другой стороны, выпускаются форт-процессоры, система команд которых оптимизирована под исполнение шитого кода.

Ссылки[править]

  • James R.Bell, "Threaded Code", "Communications of ACM", Vol.16, No.6, 370-72.
  • Шитый код на Википедии


  Nopictures-icon.png У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Stub-icon-48px.png Это заготовка статьи. Вы можете помочь проекту, дополнив её.