Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт июн 09, 2026 19:28

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 05, 2007 17:24 
Не в сети
Аватара пользователя

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

Посмотрите лучше как СПФ делает словарные статьи. Вот с этим бы разобраться для начала.
Код:
REQUIRE SEE       lib\ext\disasm.f
: SQUARE DUP * ;
: CUBE DUP DUP * * ;

: SHOW
HEX CR CR
' >R R@ WordByAddr 2DUP ." Word " TYPE CR
." 'CFA   FFA    NFA    LFA    [LFA]  CFA    IMM" CR
SWAP DUP DUP DUP 6 - . 2- DUP . SWAP 1- .
-ROT + DUP . @ . R@ . C@ &IMMEDIATE AND .
CR ." code" R> REST
DECIMAL
;

STARTLOG
' SQUARE 30 - 60 DUMP
SHOW SQUARE
' CUBE 30 - 60 DUMP
SHOW CUBE
ENDLOG
ЛОГ
Код:
570662   FE FF FF C3  80 06 57 00  00 06 53 51  55 41 52 45 юяяГЂ.W...SQUARE
570672   1B 06 57 00  00 00 00 00  00 00 00 00  00 00 F7 E8 ..W...........чи
570682   C3 A0 06 57  00 00 04 43  55 42 45 6B  06 57 00 00 Г .W...CUBEk.W..
570692   00 00 00 00  00 00 00 00  00 00 00 00  00 00 89 45 ..............‰E

Word SQUARE
'CFA   FFA    NFA    LFA    [LFA]  CFA    IMM
570666 57066A 57066B 570672 57061B 570680 0
code
570680 F7E8             IMUL    EAX
570682 C3               RET     NEAR
END-CODE
570682   C3 A0 06 57  00 00 04 43  55 42 45 6B  06 57 00 00 Г .W...CUBEk.W..
570692   00 00 00 00  00 00 00 00  00 00 00 00  00 00 89 45 ..............‰E
5706A2   FC F7 E8 F7  6D FC C3 C0  06 57 00 00  04 53 48 4F ьчичmьГА.W...SHO
5706B2   57 88 06 57  00 00 00 00  00 00 00 00  00 00 89 45 W?.W..........‰E

Word CUBE
'CFA   FFA    NFA    LFA    [LFA]  CFA    IMM
570683 570687 570688 57068D 57066B 5706A0 0
code
5706A0 8945FC           MOV     FC [EBP] , EAX
5706A3 F7E8             IMUL    EAX
5706A5 F76DFC           IMUL    FC [EBP]
5706A8 C3               RET     NEAR
END-CODE

И зачем столько пустого места в кодофайле под каждую словарную статью делать, что-то нет вразумительного обоснования этому. А сборка мусора в Форте не особо нужна. Просто мусорить не надо.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 05, 2007 17:30 
---


Последний раз редактировалось profiT Сб мар 01, 2008 00:49, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 05, 2007 17:30 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5063
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
chess писал(а):
И зачем столько пустого места в кодофайле под каждую словарную статью делать, что-то нет вразумительного обоснования этому. А сборка мусора в Форте не особо нужна. Просто мусорить не надо.

Чесс, ты не прав!
это на самом деле работает выравнивание кода на 16 байт,
это делается для ускорения кода, как и достаточно много nop ов перед началом циклов.
если не нравится, делай так: 1 ALIGN-BYTES !

кстати, кто мне может обьяснить, почему в СПФ переменная ALIGN-BYTES USER типа???


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

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


возможно и нет 8)
просто каждый говорит о своем чем-то, думая, что отвечают ему о том же 8)

кстати, что такое сборка мусора, применительно к форту? ну Лисп я еще могу понять...


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
profiT писал(а):
Товарищи, вы что, все, издеваетесь?..
Это всё туповатые рассуждения насчёт целесообразности и применимости сборки мусора, но каждый своё

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 05, 2007 18:42 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
вопрос писал(а):
Пример был примером обьединения - структуры в си, когда на одно и то же место размещаются разные данные в разные моменты выполнения программы. Это удобно тем, что нет необходимости "чистить" память, данные просто затираются и это экономит время. Можно также обьявить для данного участка памяти данные в одном формате, а потом воспользоваться ими же как если бы они были записаны в другом формате с помощью того же обьединения.

Это просто реализация на С фортрановских блоков COMMON. Годится для некоторых задач, но бесполезно в общем случае.


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
просто реализация
угу, только С - промышленный стандарт и программеры любят статические данные именно из-за того, что с ними всё яснее, скажем, операционная система может отказать в выделении динамической памяти... это нужно предусмотреть и т.д. Кроме того, нужно следить, до каких пор эта динамическая память нужна в каком из случаев... без статических данных кодить нельзя. Но - это всё уже оффтоп. :(

_________________
понимаю некоторую бестолковость некоторых вопросов


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
mOleg писал(а):
Чесс, ты не прав!
это на самом деле работает выравнивание кода на 16 байт,
это делается для ускорения кода, как и достаточно много nop ов перед началом циклов.
если не нравится, делай так: 1 ALIGN-BYTES !

Насчет выравнивания я в курсе, вопрос не по качеству, а по количеству.
Может скажешь почему выравнивание делается на 16 байт, а не на восемь. В архитектуре IA-32 за одно обращение к памяти процессор читает 8 байт, так как адрес у памяти там 36-разрядный, а процессор имеет только 33-разрядную шину адреса. Младшие три бита на адресной шине памяти имеют нулевое значение. То есть выравнивать можно и на 8-байт.
Проверил: в init.f вместо 16 ALIGN-BYTES ! сделал 8 ALIGN-BYTES !. Пересобрал СПФ. Проверил быстродействие на тестовых программах - ничего не изменилось. Словарные статьи стали соответственно более компактными.
Код:
56FF2A   FF E8 64 5C  FE FF E8 43  FE FF FF C3  48 FF 56 00 яиd\юяиCюяяГHяV.
56FF3A   00 06 53 51  55 41 52 45  F3 FE 56 00  00 00 F7 E8 ..SQUAREуюV...чи
56FF4A   C3 60 FF 56  00 00 04 43  55 42 45 3B  FF 56 00 00 Г`яV...CUBE;яV..
56FF5A   00 00 00 00  00 00 89 45  FC F7 E8 F7  6D FC C3 78 ......‰EьчичmьГx

Word SQUARE
'CFA   FFA    NFA    LFA    [LFA]  CFA    IMM
56FF36 56FF3A 56FF3B 56FF42 56FEF3 56FF48 0
code
56FF48 F7E8             IMUL    EAX
56FF4A C3               RET     NEAR
END-CODE
56FF42   F3 FE 56 00  00 00 F7 E8  C3 60 FF 56  00 00 04 43 уюV...чиГ`яV...C
56FF52   55 42 45 3B  FF 56 00 00  00 00 00 00  00 00 89 45 UBE;яV........‰E
56FF62   FC F7 E8 F7  6D FC C3 78  FF 56 00 00  04 53 48 4F ьчичmьГxяV...SHO
56FF72   57 50 FF 56  00 00 89 45  FC 8D 87 38  00 00 00 C7 WPяV..‰EьЌ‡8...З

Word CUBE
'CFA   FFA    NFA    LFA    [LFA]  CFA    IMM
56FF4B 56FF4F 56FF50 56FF55 56FF3B 56FF60 0
code
56FF60 8945FC           MOV     FC [EBP] , EAX
56FF63 F7E8             IMUL    EAX
56FF65 F76DFC           IMUL    FC [EBP]
56FF68 C3               RET     NEAR
END-CODE
И все-же почему 16 байт?
PS. Извиняюсь - несколько не в тему этот пост.

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


Последний раз редактировалось chess Пт июл 06, 2007 12:45, всего редактировалось 1 раз.

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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
мне известно, что иногда выравнивается и "на параграф" т.е. на 256
не знаю, зачем. кажется, продвинутым компиляторам так легче вычислить адресс перехода ... (некомпетентен) :shuffle;

_________________
понимаю некоторую бестолковость некоторых вопросов


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
/me думает, что на 256 выравнивание может быть полезно, если надо синхронизироваться с работой SD-RAM, читаемой страницами.

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


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

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
кстати, что такое сборка мусора, применительно к форту? ну Лисп я еще могу понять...

Для упрощения работы программиста при работе с динамически создаваемыми данными (строки, поиск по образцу, списки, хэши).


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

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
profiT писал(а):
Товарищи, вы что, все, издеваетесь?..

Я уже давно заметил, что чем ничтожнее вопрос, тем более жаркие споры он вызывает. Это живо напоминает законы Паркинсона: http://www.lib.ru/DPEOPLE/PARKINSON/parklaws.txt, раздел
"ВЫСОКАЯ ФИНАНСОВАЯ ПОЛИТИКА, или Точка безразличия"


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5063
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion писал(а):
/me думает, что на 256 выравнивание может быть полезно, если надо синхронизироваться с работой SD-RAM, читаемой страницами.

не верно, там выравнивание на 4кб 8) то есть на размер страницы

chess писал(а):
Может скажешь почему выравнивание делается на 16 байт, а не на восемь. В архитектуре IA-32 за одно обращение к памяти процессор читает 8 байт, так как адрес у памяти там 36-разрядный, а процессор имеет только 33-разрядную шину адреса. Младшие три бита на адресной шине памяти имеют нулевое значение. То есть выравнивать можно и на 8-байт.

Проверил: в init.f вместо 16 ALIGN-BYTES ! сделал 8 ALIGN-BYTES !. Пересобрал СПФ. Проверил быстродействие на тестовых программах - ничего не изменилось. Словарные статьи стали соответственно более компактными.

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

yz писал(а):
Я уже давно заметил, что чем ничтожнее вопрос, тем более жаркие споры он вызывает. Это живо напоминает законы Паркинсона: http://www.lib.ru/DPEOPLE/PARKINSON/parklaws.txt, раздел

что очень даже логично 8) на самом то деле.

но тут, все-таки другое.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 08, 2007 13:03 
---


Последний раз редактировалось profiT Сб мар 01, 2008 00:49, всего редактировалось 1 раз.

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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5063
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
profiT писал(а):
Пристыжаю бредоносцев:
http://files.myopera.com/true-grue/files/s-expr.f


Очень интересно - а что это такое?
Ни тебе для чего, ни тебе как?


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

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


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

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


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

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