Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 04:51

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 104 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 14, 2006 19:28 
Не в сети
Аватара пользователя

Зарегистрирован: Вс май 07, 2006 11:38
Сообщения: 279
Откуда: Slavyansk, Ukraine
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Anonymous писал(а):
Как Вам такой стиль оформления Форт программ:)
CodingDemo
Выглядит просто и со вкусом.

Вау! Класс! Стоит взять на вооружение!

_________________
Банзай!


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
unreal666 писал(а):
Нашел в двух местах.
файл tc_spf.f
Код:
: IF  ?COMP 0 TC-?BRANCH, >MARK 1 ; IMMEDIATE

файл spf_immed_control.f
Код:
: IF  ?COMP 0 ?BRANCH, >MARK 1 ; IMMEDIATE

И какой из них используется в СПФ ?


В соответствии с http://fforum.winglion.ru/viewtopic.php ... ight=#3981
В C:\spfm\spf\src\spf.f


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

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Понятно, сенкс.

_________________
Win2003 Ent R2
ASUS A7V266-E; Athlon XP 2000+; 512Mb; HDD: 2x120+15 Gb; GF 3 Ti2


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

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Mihail
А зачем слово, что-то выполняющее, в разных файлах обзывать по разному ?
Например из файла spf_compile.f
Код:
: _COMPILE,  \ 94 CORE EXT
\ Интерпретация: семантика не определена.
\ Выполнение: ( xt -- )
\ Добавить семантику выполнения определения, представленого xt, к
\ семантике выполнения текущего определения.
  ?SET
  SetOP
  0E8 C,              \ машинная команда CALL
  DP @ CELL+ - ,
  DP @ TO LAST-HERE
;

из файла tc_spf.f
Код:
: TC-CALL, ( addr -- )
  \ так компилируется вызов слова в СП-Форте 3.0
  ?SET
  SetOP
  0E8 C,              \ машинная команда CALL
  DP @ CELL+ - ,
  DP @ TO LAST-HERE
;

_________________
Win2003 Ent R2
ASUS A7V266-E; Athlon XP 2000+; 512Mb; HDD: 2x120+15 Gb; GF 3 Ti2


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 15, 2006 13:38 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
unreal666 писал(а):
А зачем слово, что-то выполняющее, в разных файлах обзывать по разному ?
Например из файла spf_compile.f
из файла tc_spf.f


Определения из файла tc_spf.f лежат вне двоичного образа создаваемой Форт-системы.
Т.о. с точки зрения исполнения разницы нет, но если мы скомпилируем ссылку на
TC-CALL, , она укажет за рамки загрузочного модуля. В файле tc_spf.f определяются
инструментальные средства по средствам которых производится компиляция
целевого модуля.


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

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
пробуем библиотеку ~mak/LIB/KEY/accept.f
получаем:
Exception #-2003 at: C:\SPF\devel\~MAK\LIB\KEY\KEYS.F:5:22:
ненайдено STREAM-FILE
изучаем:
слово STREM-FILE используется в
~mak/LIB/KEY/accept.f
~mak/LIB/KEY/keys.f
~mak/listing1.f
~mak/listing2.f
~mak/PaukPut.f
~micro/lib/key/accept.f
~micro/lib/key/keys.f
есть упоминание в
SPF/whatsnew.txt
Цитата:
+ H-STDIN и SOURCE-ID стали потоками чтения, а не файлами.
Это значит, что
- операции чтения происходят поблочно
- reposition при чтении строки не делается
- не стоит обращаться к потокам ф-ми работы с файлами.
Нужно использовать слова STREAM-FILE ( s -- h ) и
FILE>RSTREAM ( h -- s )
(например нужно исправить библиотеки ~ac\lib\str*.f -
слово PARSE" перед FILE-SIZE поставить STREAM-FILE)


STREAM-FILE - ни где не определенно
SPF 4.18

_________________
SPF


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

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Вопросы:
1. Чем отличаются косвенно шитый код от прямого ?

2. Что перед выполнением слова лежит на стеке возвратов?
Т.е. что там ложит на стек возвратов слово, выполняющееся после нажатия Enter (наверно это слов INTERPRET)

3. Нафига вообще слово VECT со всями CALL ...., если вместо него можно просто JMP сделать. Понятно что для записи в него нужно будет юзать что-то типа слова REPLACE. Так меньше тактов проца получается.

4. Как во время работы СПФ увеличить виртуальный размер секции (если это возможно) ?
А то 0x80000 бывает маловато для экспериментов. Можно конечно в hex-редакторе подправить нужные байты, но так неинтересно.

_________________
Win2003 Ent R2
ASUS A7V266-E; Athlon XP 2000+; 512Mb; HDD: 2x120+15 Gb; GF 3 Ti2


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 18, 2007 18:04 
Цитата:
Чем отличаются косвенно шитый код от прямого ?

См. Threaded code на wikipedia.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
unreal666 писал(а):
2. Что перед выполнением слова лежит на стеке возвратов?

Что угодно может лежать. Но самая верхняя ячейчка хранит адрес возврата из слова:
Код:
   : test    R@ . ;
                         |
   : proba  test  aaaa ;

так вот при выполнении слова proba test должен распечать указатель на aaaa


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
unreal666 писал(а):
3. Нафига вообще слово VECT со всями CALL ...., если вместо него можно просто JMP сделать. Понятно что для записи в него нужно будет юзать что-то типа слова REPLACE. Так меньше тактов проца получается.


можно по-всякому делать. Но VECT удобен тем, что это стандартное слово 8)

unreal666 писал(а):
4. Как во время работы СПФ увеличить виртуальный размер секции (если это возможно) ?
А то 0x80000 бывает маловато для экспериментов. Можно конечно в hex-редакторе подправить нужные байты, но так неинтересно.


можно пересобрать СПФ, предварительно подправив эту самую величину.
Кстати для меня тоже является секретом, почему спф так скромничает при выделении памяти - он мог бы запрашивать и 100МБ - и проблем не было бы, так как память то физическая только при обращении к определенным адресам отгрызается.


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
Кстати для меня тоже является секретом, почему спф так скромничает при выделении памяти - он мог бы запрашивать и 100МБ - и проблем не было бы, так как память то физическая только при обращении к определенным адресам отгрызается.


А виртуальная, не сразу в момент выделения?
Может, у разработчика на этот момент просто место на винте заканчивалось? :)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 19, 2007 14:09 
Цитата:
Как во время работы СПФ увеличить виртуальный размер секции (если это возможно) ?
Если речь о пространстве, доступном по HERE, то достаточно задать значение VALUE-переменной IMAGE-SIZE перед сохранением по SAVE (пересобирать SPF не нужно).
см. spf.cvs.sourceforge.net /spf/src/win/spf_pe_save.f


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 19, 2007 14:52 
unreal666 писал(а):
3. Нафига вообще слово VECT со всями CALL ...., если вместо него можно просто JMP сделать. Понятно что для записи в него нужно будет юзать что-то типа слова REPLACE. Так меньше тактов проца получается.

?

Ну, во-первых там про CALL явно так уж и не говорится. Это место в SPF относительно высокоуровнево (хотя вообще-то VECT -- генерирующее слово, а они как правило во всех системах непереносимы и сильно завязаны на систему).

Во-вторых, там таки JMP :

Код:
: VECT ( -> )
  ( создать слово, семантику выполнения которого можно менять,
    записывая в него новый xt по TO)
  HEADER
  ['] _VECT-CODE COMPILE, ['] NOOP ,
  ['] _TOVALUE-CODE COMPILE,
;

...

CODE _VECT-CODE
     POP EBX
     JMP [EBX]
END-CODE


Надо также помнить что для слов порождённых VECT'ом нужно обеспечивать два вида запуска: обычный, и через TO ; поэтому там сначала идёт запуск процедуры делающей переход по адресу в переменной слова, затем идёт ячейка в которой хранится адрес поставленной для слова процедуры, потом идёт вызов вторичного действия (вызываемого через TO )

А вообще если так:

Код:
jmp <абсолютный адрес>


и по TO менять ячейку где хранится абсолютный адрес, то реализовать вполне можно, у кого сильно засвербит тот может сделать (хотя, скорее всего, придётся задействовать пару хаков).

А по поводу того будет ли это быстрее -- это ещё вопрос... Больно уж "умничает" архитектура x86, там всякие предсказания переходов есть, чёрт его знает...


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

Зарегистрирован: Чт авг 17, 2006 10:01
Сообщения: 53
Откуда: Владивосток
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
rvm писал(а):
Если речь о пространстве, доступном по HERE, то достаточно задать значение VALUE-переменной IMAGE-SIZE перед сохранением по SAVE (пересобирать SPF не нужно).

см. spf.cvs.sourceforge.net /spf/src/win/spf_pe_save.f

Не про то. Я спрашивал про изменение в реальном времени. А то сейчас делаешь, например, 600000 ALLOT (т.е. выходим за границу вирт. размера секции кода) и при любой попытке записи вылазит ошибка ACCESS_VIOLATION.
profiT писал(а):
А по поводу того будет ли это быстрее -- это ещё вопрос... Больно уж "умничает" архитектура x86, там всякие предсказания переходов есть, чёрт его знает...

Ага. И еще всякое одновременное выполнение в разных конвеерах и на разных поколениях процев и разных фирм.

_________________
Win2003 Ent R2
ASUS A7V266-E; Athlon XP 2000+; 512Mb; HDD: 2x120+15 Gb; GF 3 Ti2


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

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
unreal666 писал(а):
Не про то. Я спрашивал про изменение в реальном времени. А то сейчас делаешь, например, 600000 ALLOT (т.е. выходим за границу вирт. размера секции кода) и при любой попытке записи вылазит ошибка ACCESS_VIOLATION.

Никак. Размер секции установлен в заголовках исполняемого файла и на ходу не меняется.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 104 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

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


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

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


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

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