Ввод слов из шитого кода - атавизм?

Перейти вниз

Ввод слов из шитого кода - атавизм?

Сообщение автор Gudleifr в Пт Сен 15, 2017 3:53 pm

Возвращаемся к Циклу Управления. В своем изначальном "стандартно-интерпретационном" смысле он рассматривал все слова одинаково исполняющимися. Независимо от того, бралось слово - из входного потока или шитого кода, оно возвращало управление в одно и то же место Цикла Управления. Источник слов определялся только значением флага - "поток/шитый код".
Такой подход, конечно, удобен с точки зрения "написания на коленке", отладки и мониторинга, но является жутко избыточным с точки зрения компиляции.
В более современных FORTH-системах мы видим, что Цикл Управления разделен на два - интерпретации потока и перебора шитого кода. Причем, второй практически исчез, оставшись в виде рудимента только в косвенном шитом коде. В подпрограммном и прямом шитом коде вместо этого цикла используется простейшая процедура "перехода к следующему" (применение внутреннего управления).
Безумное замечание: если мы для чтения слов из косвенного шитого кода применяем внешнее управление, т.е., по сути то же, что и при чтении ПОТОКА, то FORTH-машина косвенным шитым кодом - не одна машина, а две!
***

Сейчас ввод слова из потока и шитого кода противопоставляется уже идейно. При чтении из потока происходит некий анализ контекста, разной степени интеллектуальности распознавание и/или, даже, ассоциативная интерпретация... В шитый же код попадает только одно вычисленное значение адреса кода, безусловно и без всяких умственных сомнений получающего управление, как только до него дойдет очередь.
С этой точки зрения, название главы выглядит крамолой. Какой ввод? Взял - исполнил, перешел к следующему!
Однако...


Последний раз редактировалось: Gudleifr (Пт Сен 15, 2017 4:13 pm), всего редактировалось 1 раз(а)
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Ввод слов из шитого кода - атавизм?

Сообщение автор Gudleifr в Пт Сен 15, 2017 3:54 pm

ИСКЛЮЧЕНИЕ ПЕРВОЕ - СЛОВАРНЫЕ ОБОРОТЫ (СОСТАВНЫЕ КОМАНДЫ)

Подобно тому, как существуют обороты в потоке - участки, читающиеся не стандартным INTERPRET, а какими-то специальными словами-интерпретаторами, существуют и "словарные обороты" - участки кода за "исполнение" которых отвечает код слова, с которого оборот начинается. Простейшие обороты - загрузка на стек значения литерала (прошит стандартный кодоизвлекатель, затем - литерал в какой-либо форме) и оператор управления (прошивается не только сам оператор, но и метка, на которую происходит передача управления).
***

Однако, никто не запрещает использовать обороты, где начальный код более или менее интеллектуально "управляет" исполнением кода, за ним следующим. Добавляя на этапе исполнения той "неопределенности", которая у нас была в избытке при чтении потока.
Конечно, применение такого метода бесконечно отдаляет FORTH от обычных языков программирования, где такое пресекается однозначно. Откомпилированный фрагмент является чем-то окончательным, никакая его подстройка под контекст невозможна. Хотя, конечно, операционные системы и хакеры постоянно пользуются "грязными трюками", заставляя код делать не то, для чего он откомпилирован...
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Ввод слов из шитого кода - атавизм?

Сообщение автор Gudleifr в Пт Сен 15, 2017 3:54 pm

ИСКЛЮЧЕНИЕ ВТОРОЕ - УМНЫЙ КОСВЕННЫЙ ШИТЫЙ КОД

Как известно, каждое шитое слово в косвенным шитом коде содержит в себе ссылку на тот самый рудимент Цикла Управления, который отвечает за исполнение шитого кода слова. Никто не запрещает его заменить на что-то более хитрое.
Конечно, обычно это используется для создания спецслов - переменных, констант, DOES> слов. Но, в принципе, можно даже подменять адрес исполнителя даже в уже откомпилированных словах, например для мониторинга и отладки. Или придумать какие-то свои особенные исполнители кода.
***

Не совсем понятно, является ли это избыточной возможностью (и всего-лишь компенсацией за лишнюю косвенность кода) или на этом пути можно получить что-то интересное...
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Ввод слов из шитого кода - атавизм?

Сообщение автор Gudleifr в Пт Сен 15, 2017 3:55 pm

ИСКЛЮЧЕНИЕ ТРЕТЬЕ - КОНТЕКСТ ИСПОЛНЕНИЯ

У нас есь адрес кода и мы должны его исполнить. Вроде бы, свернуть уже некуда. Ан, нет.
По этому адресу может находиться совсем не то, что подразумевалось при компиляции.
Узаконенный пример такого рода - хранение пользовательских переменных. Организуется программно или аппаратно страничная память - по странице для каждого пользователя FORTH-системы. FORTH-система обращается к данным по одним и тем же адресам, но получает разные результаты в зависимости от того, страница какого пользователя является текущей.
***

Кто помешает использовать этот механизм для установки каких-либо других контекстов? Иногда, ведь, мы даже просто вынуждены использовать этот механизм "позднего связывания", например, в Win-программировании, где Ваша программа вполне может рухнуть, когда в ОС окажется DLL-библиотека "не той системы".
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Ввод слов из шитого кода - атавизм?

Сообщение автор Gudleifr в Пт Сен 15, 2017 3:56 pm

АЛЬТЕРНАТИВА ИСПОЛНЕНИЮ

Еще Мур предлагал хранить в шитом коде не адрес кода, а адрес слова. А любители косвенного шитого кода придумали даже сверхкомпактный свернутый шитый код. В обоих случаях надо еще произвести какие-то действия, для того, чтобы получить адрес кода. Поэтому идея хранения в шитом коде не адреса кода, но некоторого "символа", подлежащего некой интерпретации вылезает то тут, то там.
***

Какова предельная мощность этого механизма? Использование ассоциативных методов интерпретации кода? составных символов? критериев отбора самого нужного слова из нескольких полученных? ...
avatar
Gudleifr
Admin

Сообщения : 931
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Ввод слов из шитого кода - атавизм?

Сообщение автор Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения