Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 15:32

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 72 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: ASM
СообщениеДобавлено: Вс фев 06, 2022 19:56 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
chess писал(а):
Для преобразования кода слов, написанных на ассемблере(а ассемблер у каждого может быть свой)
Начал разбираться с прошлым, поискал источники, что раньше было.
Нашёл интересную переписку из прошлого: :)
https://fido7.su.forth.narkive.com/r1eg9dvp/spf4-linux

...форт-ассемблер удобнее MASM'а,

Hу, ты садист... Вот помру от смеха - с кем тогда ругаться будешь? :-)))
Орудие пытки жутче чем 486asm.f никакому гестапо и за сто лет не выдумать.

P.S. 2005 год, аж грустно стало... :(

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: битовые накопительные массивы
СообщениеДобавлено: Пн фев 07, 2022 12:53 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
С написанием ассемблера под Интел вообще весело)

Большинство опкодов вполне себе человеческие и для них можно написать алгоритм.

Но, как говорится, чем в дальше в лес.

1) Есть неизменные опкоды на 1, 2, 3 байта
2) Есть особые опкоды для опр. регистра (RAX в большинстве случаев)
3) Есть опкоды на, хм, полтора байта (первый байт там, ЕМНИП, 0xFF)

И под конец небольшой лайфхак:
Писать ассемблер проще в 8-ричной системе счисления. Уж не помню, где вычитал, но реально удобнее.

Сами посудите:
4 режима адресации (0-3) (память-регистр, память с малым смещением - регистр, память с большим смещением - регистр, регистр-регистр)
8 регистров (0-7)

ЕМНИП,
8 BASE !
0x89 C, 377 C,
скомпилирует MOV EDI, EDI

_________________
Цель: сделать 64-битную Нову под Винду


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

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
Victor__v писал(а):
Но, как говорится, чем в дальше в лес.
...тем всё страшнее.
Только днём, и только с этой группой! :)
Victor__v писал(а):
Писать ассемблер проще в 8-ричной системе счисления. Уж не помню, где вычитал, но реально удобнее.
PDP-11 под ДВК-3.
Я ещё это застал.
Продолжение было МК-90.
В каждой системе есть своя изюминка.

Так и ФортАСМ:
Одни стараются булочки с изюмом делать.
Другие батоны с героином.

И все ничего не комментируют, кроме общих фраз.
Так что всё не "в 8-ричной системе счисления", а в сопровождении.

Получается: ФОРТ - это ЯП для себя любимого. :^)

_________________
Сотник. SotnikSTO@mail.ru


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Sotnik писал(а):
И все ничего не комментируют, кроме общих фраз.
Так что всё не "в 8-ричной системе счисления", а в сопровождении.

Получается: ФОРТ - это ЯП для себя любимого. :^)


А что там комментировать-то?
Всё что можно берётся из справочника интела.
Максимум, какие-то нетривиальные моменты.
Например, в интеле нет адресации вида регистр-память, если память это [ebp] или [esp]
там уже другая фигня применяется.
В общем, процессоры интел самымые продуманные процессоры в мире)

_________________
Цель: сделать 64-битную Нову под Винду


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

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
Victor__v писал(а):
Sotnik писал(а):
И все ничего не комментируют, кроме общих фраз.
Так что всё не "в 8-ричной системе счисления", а в сопровождении.
Получается: ФОРТ - это ЯП для себя любимого. :^)
А что там комментировать-то?
Всё что можно берётся из справочника интела.
Откуда вы все такие берётесь??? :))
Виктор, ну что проще для освоения:
чётко закомментированная тобой документация, составленная после хождения по граблям,
переложенная в твою программу, твоими СЛОВАМИ,
или ползание последователей по даташитам, и ещё и его хождение по граблям???
Ты же выкладываешь ЭТО, делишься трудами, гордишься проделанным.

Я осваивая Форт Ларионова, не заглядывал вообще никуда.
И только в начале этого пути, приехал к нему, и за час получил исчерпывающие данные, да ещё и его исходники!!!
И его документирования хватило для решения ВСЕХ моих задач.

А что я вижу в наше время!??
Титанические труды нескольких талантов, великолепные исполнения, и...
... которые являются чёрными ящиками. Вреде хорошо работает.

Типа - вот народу моя работа, мой труд, и по#$итесь хорошенько, чтоб понять как я этого ужа скрестил с ежом...

Вот недавний пример: viewtopic.php?p=49453#p49453
Цитата:
Главное мне понимать как это выглядит в работе.
Код:
\ Глобальная память, разделяемая между потоками      d:\spf4-20\devel\~yz\lib\gmem.f
\ Идея реализации - А. Черезов
\ Ю. Жиловец, 17.12.2002     

REQUIRE CZMOVE ~yz/lib/common.f
MODULE: GMEM
EXPORT
: MALLOCATE   ( u -- u-addr/0)  8 ( HEAP_ZERO_MEMORY) GetProcessHeap HeapAlloc ;
: MFREE         ( a-addr -- ?)     0 GetProcessHeap   HeapFree ;
: MGETMEM     ( u -- a-addr )    MALLOCATE   DUP IF 0 ELSE -300 THEN THROW ;
: MFREEMEM    ( a-addr -- )       MFREE ERR THROW ;
: CMGETMEM   ( a n -- a2)         DUP 1+ MGETMEM   2DUP C! DUP >R 1+ SWAP CMOVE R> ;
: CZMGETMEM ( a n -- a)           DUP 1+ MGETMEM     DUP >R CZMOVE R> ;
: ZMGETMEM     ( z -- a)          ASCIIZ> CZMGETMEM ;
;MODULE
Как работают эти слова?
Вместо использования чьего-то труда, для решения задачи, необходимо лезть в дебри железа, и тратить время, на то, что понадобиться один раз.

Это, как видится, специфика только наша, чисто Форт-овская... :(

_________________
Сотник. SotnikSTO@mail.ru


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Sotnik писал(а):
Я осваивая Форт Ларионова, не заглядывал вообще никуда.
И только в начале этого пути, приехал к нему, и за час получил исчерпывающие данные, да ещё и его исходники!!!
И его документирования хватило для решения ВСЕХ моих задач.

Похоже сайт forth.ru вместе с "янусом" приказал долго жить. :(


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

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
KPG писал(а):
Похоже сайт forth.ru вместе с "янусом" приказал долго жить. :(
Наши ресурсы, созданные ещё мастодонтами, на плечах которых мы стоим, иссякают.
Мейнстрим бешеного развития не очень эффективных продуктов, заполняет время и информационное пространство.

Мы тут не можем создать единую платформу, стабильную и внятную.
Потому нас и не понимают новички.
Всё хаотично и разбросано по форумам, годам, понятиям, хотелкам.

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

_________________
Сотник. SotnikSTO@mail.ru


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
А что я вижу в наше время!??
Титанические труды нескольких талантов, великолепные исполнения, и...
... которые являются чёрными ящиками. Вреде хорошо работает.


:)) :)) :))

Я сам блин отказался от форт-ассемблера, который сам же написал, как раз из-за бредовости интела. Меня вообще выбесил переход на 64 бита. Надо ж было додуматься сделать переход с помощью костыля)
Для компиляции кодов теперь использую fasm

Цитата:
Как работают эти слова?

Так же как ALLOCATE и FREE только память общая между потоками. Тут комментарии в скобочках, их более чем достаточно для использования.

А теперь давайте разберём задучу про ваши 8 гигов.
Зачем их гонять по циклу?
Какой там размер элемента в массиве?

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

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: битовые накопительные массивы
СообщениеДобавлено: Пн фев 07, 2022 23:54 
Не в сети
Аватара пользователя

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

Код:
: DUP32
[
8D C, 6D C, FC C,
89 C, 45 C, 00 C,
]
;
: DUP64
[
48 C,
8D C, 6D C, F8 C,
48 C,
89 C, 45 C, 00 C,
]
;

Посмотрел на DUP в Forth32 и Forth64.
Костыль это префикс перед инструкциями 0x48?
В чем тут сложность перехода с 32 на 64 разряда?

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
0x48 напоминаю в 32-битном интеле это операция декремента. Это раз.
Добавилось ещё 8 регистров, для использования которых нужны ещё префиксы. Это два.
Еще есть префиксы для разрядности данных с энтими регистрами.
В общем, интелы извращались как могли)

_________________
Цель: сделать 64-битную Нову под Винду


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

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
fasm Посмотрел - простенькая прога, никаких наворотов, всё по делу. :)
Victor__v писал(а):
Так же как ALLOCATE и FREE только память общая между потоками. Тут комментарии в скобочках, их более чем достаточно для использования.
Ага. В скобочках.
Код:
: MALLOCATE   ( u -- u-addr/0)  8 ( HEAP_ZERO_MEMORY) GetProcessHeap HeapAlloc ;
Первое же слово GetProcessHeap что делает?
Смотрю упоминания из наработок:
1) devel\~ac\lib\memory\heap_enum.f
WINAPI: GetProcessHeaps KERNEL32.DLL
2) devel\~ac\lib\win\winsock\iphlp_xp.f
\ 2 0 GetProcessHeap ... по версии Kumar Gaurav Khanna
\ 2 2 GetProcessHeap ... по версии Russinovich
И т.д. Лезть в API - так форт тогда зачем? Зачем все наработки?
В том и беда, что не проговаривается, а мнемоники не хватает.
Victor__v писал(а):
А теперь давайте разберём задачу про ваши 8 гигов.
Зачем их гонять по циклу?
Какой там размер элемента в массиве?
На 32-битной программе (любой, не только форта касается) это в лоб не решить, поскольку 4 гига это, блин, уже почти предел выдаваемой памяти программе.
Надо не 4 а 8, точнее - как можно больше. Добавить памяти можно. Сейчас 16 гег на 72 бита две планки.
Заполняя память данными, получаемыми от сложной обработки, необходимо быстро выбирать нужное значение.
Сейчас каждое значение вычисляется каждый раз заново.
Размер элемента максимальный 64 бита = 8 байт. Переменные нужны по 64 бита. У меня Win10x64.
В наличии пока только SPF, 32 = 4 байта, пока так - перспективы потом.
Индексированный массив позволит решать задачу в реальном времени, а не долгие часы.
В идеале:
1) Необходимо получать мах памяти, и читать/писать вычисляемые значения.
2) Использовать все ядра независимо.
3) Рутину свалить на GPU. (но это дохлый номер для форта, как я понимаю)

_________________
Сотник. SotnikSTO@mail.ru


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Sotnik писал(а):
1) Необходимо получать мах памяти, и читать/писать вычисляемые значения.
2) Использовать все ядра независимо.
3) Рутину свалить на GPU. (но это дохлый номер для форта, как я понимаю)


Qt, Eclipse, Lazarus? В чем смысл все-все-все написать именно на Форте? Пусть он будет не поверх fasm, а поверх более высокоуровневых систем, которые и память ему выделят, и с GPU поработают.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Sotnik писал(а):
\ 2 0 GetProcessHeap ... по версии Kumar Gaurav Khanna
\ 2 2 GetProcessHeap ... по версии Russinovich
И т.д. Лезть в API - так форт тогда зачем? Зачем все наработки?

А что вы хотели?
Чтобы форт умел сам в обход ОС выделять память в куче?
Это придирка даже не к форту, а ко всем всевозможным биндингам в куче языков.
И да каждый фортер решал такими словами наработками собственную задачу, только и всего.

Цитата:
Сейчас 16 гег на 72 бита две планки.
Заполняя память данными, получаемыми от сложной обработки, необходимо быстро выбирать нужное значение.
Сейчас каждое значение вычисляется каждый раз заново.
Размер элемента максимальный 64 бита = 8 байт. Переменные нужны по 64 бита. У меня Win10x64.
В наличии пока только SPF, 32 = 4 байта, пока так - перспективы потом.
Индексированный массив позволит решать задачу в реальном времени, а не долгие часы.
В идеале:
1) Необходимо получать мах памяти, и читать/писать вычисляемые значения.
2) Использовать все ядра независимо.
3) Рутину свалить на GPU. (но это дохлый номер для форта, как я понимаю)


Рассматривали MySQL в качестве рабочей лошадки?

1) Можно опять же с помощью API записывать все значения в файл. И читать оттуда же. Даже хип выделять не надо. Надо только вспомнить как называется в винде функция для сброса позиции чтения файла. Тут однако уже всё упирается в винду. Я не знаю есть ли у неё ограничения на макс. размер файла.

2) Распарралелить дело хорошее. С чтением проблем нет, а вот с записью могут быть тормоза. Слова для создания потоков в СПФ есть. Можно и семафор впихнуть для душевного спокойствия.

3) Рутина это те самые сложные вычисления? Тут не подскажу, просто не знаю как делается.

_________________
Цель: сделать 64-битную Нову под Винду


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

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
Hishnik писал(а):
Sotnik писал(а):
1) Необходимо получать мах памяти, и читать/писать вычисляемые значения.
2) Использовать все ядра независимо.
3) Рутину свалить на GPU. (но это дохлый номер для форта, как я понимаю)
Qt, Eclipse, Lazarus? В чем смысл все-все-все написать именно на Форте? Пусть он будет не поверх fasm, а поверх более высокоуровневых систем, которые и память ему выделят, и с GPU поработают.
Уже написано год назад, работает.
Каждый шаг оптимизации даёт + в результат.
Когда я за это брался, уровень сложности был минимальный.
На Форте всё крутилось легко.
Усложняя систему, и получая более производительные решения, убедился, что лезть в дебри других языков нет смысла.

Изюминка: Решение на Форте, как текстовый файл в FARe, умещается на одном экране.
С десяток определяющих слов, правда, перенесены в spf.ini.
В начале это были трудные поиски оптимального алгоритма.
Форт для меня - это максимальная идеология для работы массивом.

_________________
Сотник. SotnikSTO@mail.ru


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
И работа с памятью, и графика на Форте не будет отличаться от того, что уже реализована. А значит, нет никакого смысла все это переписывать еще раз. Форт может управлять всем этим.


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

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


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

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


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

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