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 Он имел ввиду переход на метку @f , если символ [bx] больше пробела. Имел ли он при этом ввиду, что кириллица заведомо меньше пробела ? Или не имел ?
mov dx,[_BL.v] ; C=" " pop cx,bx ; Len, Addr @@: jcxz @f cmp dl,[bx] jl @f |
Автор: | _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 писал(а): А куды они подевались Упрятаны в соответствующие "действия"....Уффф... Нашлась пропажа ! |
Автор: | 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".
|
Страница 15 из 36 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |