Forth
http://fforum.winglion.ru/

Моя система(_KROL)
http://fforum.winglion.ru/viewtopic.php?f=2&t=3127
Страница 15 из 36

Автор:  gudleifr [ Вс сен 03, 2017 13:18 ]
Заголовок сообщения:  Re: Моя система(_KROL)

<Потерто по справедливому замечанию Victor__v>

Автор:  Ethereal [ Вс сен 03, 2017 17:03 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Gudleifr, ты максималист. KROL, молодой ишшо, ему надо по граблям походить, чтобы понять, что небольшая экономия времени на "написал побыстрее" выливается потом в дикие потери времени с отладчиком.

А тем временем у меня пошел этап отступления от Вирта в сторону своего. Нашел у него некорректность в синтаксическом анализе и исправил (исходник в сообщении на предыдущей странице обновил, добавив там от души еще комментариев). Но все равно Вирт - гений. Восхитился его умением раскладывать сложное на простое. Написание первого компилятора Фортрана в трудозатратах весило 18 человеко-лет. Вот Вирта-то у них и не было.

И вот надо одну идею у Вирта спереть в Форт. Слова CASE OF ENDOF ENDCASE когда-то предложил некто Dr.Eaker (не знаю кто это). Так вот у него неразрешенные еще ссылки вперед накапливаются на стеке и самым верхним лежит счетчик этих ссылок. А у Вирта неразрешенные ссылки вперед прямо в коде образуют список. Один хрен, пока адреса этих переходов не разрешены, их значения смысла не имеют. Так вот Вирт заставил их одно ссылаться на другое. И чтобы адреса разрешить надо иметь на стеке только одно значение - адрес самого последнего неразрешенного перехода. И потом от последнего к первому по этому списку пройтись. Красиво очень. Вот надо такой CASE сделать.

P.S. У Вирта накомпилированный код собирался в памяти и только в конце трансляции сбрасывался в файл. Я поначалу стал писать, чтобы этот код сразу выдавался как выходной поток. И напоролся, что при однопроходной трансляции из-за неразрешенных ссылок вперед это невозможно. Ну, чтобы не переделывать то, что уже написано, отправил выходной поток в файл и начал адреса переходов корректировать прямо в выходном файле, с помощью перемещения указателя в нем SEEK. Но вот сейчас пришла мысль, что если работу по разрешению ссылок вперед отдать ассемблеру, то однопроходная компиляция, как преобразование потока возможна. Т.е. компилятор принимает входной поток на Обероне и тут-же выдает выходной поток на ассемблере. А уж ассемблер о разрешении переходов на метки вперед позаботится. Вот так надо сделать.
В общем-то так работал когда-то RAFOS-Паскаль. Только пока до этого сам не дойдешь, не поймешь.

Автор:  gudleifr [ Вс сен 03, 2017 17:34 ]
Заголовок сообщения:  Re: Моя система(_KROL)

<Потерто по справедливому замечанию Victor__v>

Автор:  Ethereal [ Вс сен 03, 2017 17:39 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Но скорей всего у KROL не достигнуто пока состояние, когда пишешь именно то, что имеешь ввиду. А такого состояния нужно как можно быстрее достичь. Ну вот он пишет
Код:
AWORD TICK,"(')",0
mov dx,[_BL.v] ; C=" "
pop cx,bx ; Len, Addr
@@:
jcxz @f
cmp dl,[bx]
  jl @f
Он имел ввиду переход на метку @f , если символ [bx] больше пробела. Имел ли он при этом ввиду, что кириллица заведомо меньше пробела ? Или не имел ?

Автор:  _KROL [ Вс сен 03, 2017 17:58 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Ethereal писал(а):
И вот надо одну идею у Вирта спереть в Форт. Слова CASE OF ENDOF ENDCASE когда-то предложил некто Dr.Eaker (не знаю кто это). Так вот у него неразрешенные еще ссылки вперед накапливаются на стеке и самым верхним лежит счетчик этих ссылок. А у Вирта неразрешенные ссылки вперед прямо в коде образуют список. Один хрен, пока адреса этих переходов не разрешены, их значения смысла не имеют. Так вот Вирт заставил их одно ссылаться на другое. И чтобы адреса разрешить надо иметь на стеке только одно значение - адрес самого последнего неразрешенного перехода. И потом от последнего к первому по этому списку пройтись. Красиво очень. Вот надо такой CASE сделать.
Замечательный подход!
Ethereal писал(а):
P.S. У Вирта накомпилированный код собирался в памяти и только в конце трансляции сбрасывался в файл. Я поначалу стал писать, чтобы этот код сразу выдавался как выходной поток. И напоролся, что при однопроходной трансляции из-за неразрешенных ссылок вперед это невозможно. Ну, чтобы не переделывать то, что уже написано, отправил выходной поток в файл и начал адреса переходов корректировать прямо в выходном файле, с помощью перемещения указателя в нем SEEK. Но вот сейчас пришла мысль, что если работу по разрешению ссылок вперед отдать ассемблеру, то однопроходная компиляция, как преобразование потока возможна. Т.е. компилятор принимает входной поток на Обероне и тут-же выдает выходной поток на ассемблере. А уж ассемблер о разрешении переходов на метки вперед позаботится. Вот так надо сделать.
Почему-то вспомнился компилятор Абадябера Lint языка Степлер, который из-за байткода может одно из 3-х: исполнить, транслировать в листинг ассемблера, или сразу в com-файл. На этой странице вы можете найти ссылки: http://abaduaber.ru/Prog.htm
А вот прямая ссылка: http://abaduaber.ru/my/lastlint.zip
gudleifr писал(а):
Вот именно поэтому я и "обижаю" коллегу _KROL.
А я в принцепи особо не обижаюсь) Можно вопрос? Где найти вышеперечисленные книги?
gudleifr писал(а):
покурить Брэдли или Скэнлона, для экстрима пролитсать Джордейна

Автор:  gudleifr [ Вс сен 03, 2017 18:39 ]
Заголовок сообщения:  Re: Моя система(_KROL)

<Потерто по справедливому замечанию Victor__v>

Автор:  _KROL [ Вс сен 03, 2017 18:42 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Cпасибо! А Джордейна я когда-то вроде читал...(но уже не помню:])

Автор:  gudleifr [ Вс сен 03, 2017 19:17 ]
Заголовок сообщения:  Re: Моя система(_KROL)

<Потерто по справедливому замечанию Victor__v>

Автор:  zehotello [ Пн сен 04, 2017 07:16 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Цитата:
А, вообще, Вирт фортерам противопоказан. У него, ведь, "алгоритмы+данные"... А в FORTH данных нет...

О как. "в FORTH данных нет..."
А куды они подевались :?: :?:

Автор:  gudleifr [ Пн сен 04, 2017 09:15 ]
Заголовок сообщения:  Re: Моя система(_KROL)

<Потерто по справедливому замечанию Victor__v>

Автор:  zehotello [ Пн сен 04, 2017 15:58 ]
Заголовок сообщения:  Re: Моя система(_KROL)

gudleifr писал(а):
zehotello писал(а):
А куды они подевались
Упрятаны в соответствующие "действия"....

Уффф... Нашлась пропажа ! :D

Автор:  Ethereal [ Пн сен 04, 2017 17:32 ]
Заголовок сообщения:  Re: Моя система(_KROL)

gudleifr писал(а):
zehotello писал(а):
А куды они подевались
Упрятаны в соответствующие "действия"
Ну если мне хочется данных без соответствующих действий, то я их тоже создам. В режиме интерпретации :
HERE
1 C, 2 C, 3 C, 4 C, 5 C, \ данные сами по себе
DUP HERE OVER - H-OUT @ WRITE DROP
HERE - ALLOT

Автор:  gudleifr [ Пн сен 04, 2017 17:57 ]
Заголовок сообщения:  Re: Моя система(_KROL)

<Потерто по справедливому замечанию Victor__v>

Автор:  Ethereal [ Пн сен 04, 2017 18:06 ]
Заголовок сообщения:  Re: Моя система(_KROL)

gudleifr писал(а):
А зачем?
Чтобы иллюстрировать тезис, что в Форте также возможны данные и не инкапсулированные с действиями. Т.е данные per se (лат.).

Автор:  _KROL [ Пн сен 04, 2017 18:09 ]
Заголовок сообщения:  Re: Моя система(_KROL)

Проще... кому как) Опять таки ответы получаются субъективными.
А временные данные можно хранить и в стеке.
P.s. Нашёл DOSовский FOBOS(by gudleifr). Дублирую по некоторым причнам. Очень интересная вещь, правда я не понял, почему там надпись "SHARE WARE".

Вложения:
g1.rar [93.38 Кб]
Скачиваний: 337

Страница 15 из 36 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/