Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб апр 20, 2024 01:20

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Чем отличается LIT, от ,
СообщениеДобавлено: Ср мар 14, 2007 11:23 
Из недавнего чата:

Pretorian писал(а):
Господа, чем отличается LIT, от , ???


ygrek писал(а):
Код:
lib/ext/disasm.f
HERE 3 LIT, RET, REST
HERE 3 , CELL DUMP


LIT, скомпилирует код который при выполнение положит 3 на стек, просто пишет число в первую свободную ячейку кодофайла


Pretorian писал(а):
А разве не LIT, ( n -- ) -- скомпировать запись числа на стеке в кодофайл ???


ygrek писал(а):
не понял

Pretorian писал(а):
По моему 3 LIT, RET, и 3 , RET, одинаковы ???

ygrek писал(а):
disasm в помощь
зачем говорить по-моему когда можно взять и посмотреть как это будет на самом деле? у вас ведь проблем с восприятием ассемблера нет - я так понял..


Хищник писал(а):
после 3 , RET, в коде будет код 3 и код возврата. после 3 LIT, RET, - код, который при выполнении положит на стек 3 и код возврата

ygrek писал(а):
кстати:
Код:
: RET, 0xC3 C, ;


Pretorian писал(а):
Спасибо Хищник теперь понятно. Вечно оплошность во времени компиляции. Слухайте а дизасм один и тот же код кажит c DIS-OPT. Да даже с оптимизатором тоже самое. Что на ето ygrek скажешь???


ygrek писал(а):
смотрите внимательнй

Код:
HERE 3 LIT, RET, REST

5777F7 8945FC MOV FC [EBP] , EAX
5777FA B803000000 MOV EAX , # 3
5777FF 8D6DFC LEA EBP , FC [EBP]
577802 C3 RET NEAR
END-CODE

HERE 3 , RET, REST

577803 0300 ADD EAX , [EAX]
577805 0000 ADD [EAX] , AL
577807 C3 RET NEAR
END-CODE



Pretorian писал(а):
Код:
: sss 3 , RET, ;
SEE sss

MOV FC [EBP] , EAX
MOV EAX , # 3
LEA EBP , FC [EBP]
CALL 5472B0 ( , )
CALL 55362C ( RET, )
RET NEAR


: sss1 3 LIT, RET, ;
SEE sss1

MOV FC [EBP] , EAX
MOV EAX , # 3
LEA EBP , FC [EBP]
CALL 553660 ( LIT, )
CALL 55362C ( RET, )
RET NEAR


И где разница?


Pretorian, в описании кодофайла я старался как можно сильнее подчеркнуть разницу между словами компилирующими код (действия) и словами компилирующими данные.

Последний твой кусок кода -- это недоразумение. Что делает sss? Если запустить sss то оно выполнит код указанный её действием: 3 , RET,. А именно: оно при запуске (т. е. во времени исполнения) скомпилирует (запишет) обычное число в кодофайл и запишет туда же действие выхода из процедуры. При запуске. Смотреть его бесполезно. Это всё равно что пытаться разбирать гаечный ключ, для того чтобы понять принцип работы стоящего рядом экскаватора.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2007 11:55 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Разницу подчеркнул, но очень сложновато у тебя конец в статье написан, не разобрался еще что бы в полне, осталась неполноценное эфимерное понимание, которое ни как не хочет закрепится и постоянно ускользает.

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2007 12:08 
Pretorian писал(а):
Разницу подчеркнул, но очень сложновато у тебя конец в статье написан, не разобрался еще что бы в полне..

Мда.. Надо ещё перечитать может и дооформить..

Pretorian писал(а):
..осталась неполноценное эфимерное понимание, которое ни как не хочет закрепится и постоянно ускользает

От таких вот эфемерных пониманий (которые на самом деле -- непонимания) надо всемерно убегать. Вот, я помню тоже на первом курсе не мог никак уяснить вот эту же самую тему. Помог (и до сих пор помогает) механистический подход, т.е. пошаговое представление в голове что именно и когда происходит, фактически -- отладка кода в голове.

Пытаясь навести аналогии к допустим кодофайлу Форта, ничего хорошего у нас не получится, только запутаемся и замучаемся таща эта аналогии за уши. Кодофайл -- это кодофайл. С ним делают то-то, то-то и то-то. Всё прочую лирику из памяти стереть.

(у например Броуди кодофайл -- это такой монах который пишет себе летописи, а EXECUTE -- палач)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2007 12:27 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
В статье хорошо бы еще помещать ассемблерный код (форт слова я еще не все знаю, от сюда и проблема разобраться последовательно), эти кирпичики хорошо помогают. Не, я понял что тут виноват IMMEDIATE который заставляет при компиляции исполнять слово помеченное им. Но пока все таки еще эфимерно в сознании, тока могу сопоставить с препроцессором.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2007 12:32 
По поводу большей "понятности" ассемблера перед фортом я уже высказывался. То что делают слова надо понимать не по их проекции в маш. код (слишком сложно), а по тому что они делают. Что они делают я описываю.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2007 13:11 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
В русском языке очень много понятий одного и того же слова, тяжело понять точно и достоверно что хотел автор. Я не говорю что ассемблер понятней форта, я говорю что например мне будет так более понятней, тяжело думать фортом, когда тока начал его изучать, а за спиной 20 лет программирования на других языках и сложившийся стиль программирования, но это все не применимо к форту, он по другую сторону развития других языков, здесь думать надо по другому и пока я не смогу перестроится для меня будут сложности.

ЗЫ: Кстати начало и середина статьи очень удачно-понятно получилась.

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 16, 2007 18:57 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Pretorian писал(а):
Я не говорю что ассемблер понятней форта, я говорю что например мне будет так более понятней, тяжело думать фортом, когда тока начал его изучать, а за спиной 20 лет программирования на других языках и сложившийся стиль программирования, но это все не применимо к форту, он по другую сторону развития других языков, здесь думать надо по другому и пока я не смогу перестроится для меня будут сложности.

Для более быстрого освоения Форт-технологии нужно решить ряд маленьких, специально подобранных задач.
В ходе решения каждой задачи будут гарантированно освоены какие-то приемы программирования и параллельно
освоено устройство этой системы программирования, на которых и основаны эти приемы программирования.
Можно решить только одну простую по формулировке, но многопрофильную задачу, которая поможет освоить Форт глубоко и всесторонне.
Вот такая задача.
Предположим на стеке параметров находится 5 параметров.
Нужно определить слово c именем $, которое внутри определения через двоеточие работает следующим образом:
: name1 ..... 2 5 $ ..... ;
берет 2-й параметр считая от дна стека параметров и меняет 1-цу в имени слова name1(пятый символ) на 0, если параметр равен 0, или на + если параметр >0, или на - если параметр <0.
2 5 $ , здесь 2 - второй параметр, 5 - пятый символ в имени слова name1. Это изменение имени происходит в словаре при исполнении слова name1. Другой вариант этой задачи - изменение имени призойдет в ходе компиляции.
После решения этой задачи Форт практически будет освоен. :D

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 16, 2007 20:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
chess писал(а):
После решения этой задачи Форт практически будет освоен. Very Happy


Что-то мне совсем не верится, что после решения этой задачи, форт будет освоен...
задача-то по сути мизерная, чисто на умение самомодифицирующийся код писать...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 16, 2007 20:44 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
ИМХО задача хорошая. Затрагиваются сразу много вещей, как и было обещано. Т.е. как задачка для изучения - самое оно. Респект.

NB Для второго варианта задачи требуемый код выглядеть должен так -
Код:
: name1 ..... [ 2 5 ] $ ..... ;

т.к. наверное не стоит требовать распознавать скомпилированные внутри определения литералы...

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 17, 2007 08:37 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
yGREK писал(а):
т.к. наверное не стоит требовать распознавать скомпилированные внутри определения литералы...

Нет, именно без скобок [ ]. Это для придания блеска, полученной Форт-квалификации. :D

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 17, 2007 22:09 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 380
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
а мне не нравится эта задачка. она на знание структуры конкретного форта завязана.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 17, 2007 22:34 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Почему же? Первый вариант (с действием во время исполнения) по-моему вполне ANS-решаемый (хм, наверное проблема только в "от дна стека параметров"). Второй вариант если со скобками [ ] - тоже.

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 19, 2007 06:55 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Ага, я не могу такую задачку решить, я не знаю как и где имена хранятся, есть подозрение что в кодофайле где то, вобще хорошо бы статейку небольшую как слово сохраняется.

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 19, 2007 11:30 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Баранов - глава "2.2. Структура словарной статьи"
Немного в SF глава 9 Under the Hood

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB