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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 72 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: битовые накопительные массивы
СообщениеДобавлено: Ср фев 16, 2022 14:23 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Victor__v писал(а):
Что конкретно переносить? Есть примеры?

Да что "угодно" имеющееся в репозитории gForth и "сопряжённых" проектов c gForth (net2o ...),
если не делать какой то режим совместимости с gForth (что может быть излишним)

к примеру Minos GUI появившеюся с VFX Forth, слой работы с SDL, OpenGL, callback, ffi, Gray parser ...


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

Зарегистрирован: Чт июн 03, 2021 16:13
Сообщения: 26
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Victor__v писал(а):
Это сделано в лоб? Типа положить на стек хендл, который хранится в самом exe? Или код вида
: KERNEL32.DLL Z" KERNEL32.DLL" LoadLibraryA ;
???

Это сделано таким образом, чтобы макисмально разграничить реализацию примитивов от реализации форт системы уже непосредсвенно в Форт. API0 - примитив который возвращает указатель на блок памяти в который загрузчик ложит адреса 2х базовых методов - LoadLibrary & GetProcAddress. Примитивы вида INVOKEXY являются враперами для системных вызовов, где Х - 0 или 1 указывает возвращает ли системный метод значение которое нужно перенести на стек форт системы. Y - от 0 до 15, определяет колличество агрументов.
Код:
: LDLIB ( str -- handle ) API0 @ INVOKE11 ; \ LoadLibraryA

: PROCADDR ( dllHandle str -- procAddr ) API0 CELL+ @ INVOKE12 ; \ GetProcAddress

: DLL ( compilation: "dll_name" --  , runtime: ... -- handle ) CREATE MYSELF @ @ LDLIB , DOES> @ ; \ Load dll and return handle to it

DLL KERNEL32.DLL


Victor__v писал(а):
Я, конечно, не специалист в этом, но замена stdcall на передачу параметров через регистры это личная заморочка винды. Сменила конвенцию на это в своих либах и фиг с ней. Но в условной библиотеке IUP (лицензия MIT) параметры независимо от разрядности передаются по конвенции Cdecl. Пните, если не прав.

Как раз в зависимости от разрядности. Для 32х бит - конвенции х86 все в силе. Для х64 есть несколько конвенций. Для винды - она называется "Microsoft x64 calling convention", еще появился vectorcall. Для линукса и макОс используется "System V AMD64 calling convension". И кстати, они абсолютно не совместимы между собой. Так что заморочились все :D

Victor__v писал(а):
Так и думал. А планируется ли заморочка с передачей параметров через XMM?
Просто выбранный вами синтаксис для этого наиболее удобен. Разумеется, если в этом будет практическая необходимость.

Это все поддержано. FPU на х64 не используется.

...В копилку темы: проверил последнюю версию gforth 0.7.9:
Код:
require lib.fs
require libcc.fs
require fflib.fs
library kernel32 kernel32.dll
kernel32 VirtualAlloc ptr int int int (ptr) VirtualAlloc
kernel32 VirtualFree ptr int int (int) VirtualFree
....
8Gb-Alloc-Test
Memory allocation error!

Странно, в ситеме установлено 32Гб...


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

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
KPG писал(а):
Victor__v писал(а):
ИМХО, gforth вариант не для всех.

В плане проверки работоспособности каких то решений (слов) реализванных в gForth
тоже может быть полезна как и другая какая то Форт система даже если не нацеливаться на её использование как основы.

Мануал у неё объёмный https://gforth.org/manual/
Хм. До этого я пользовался неким вариантом давнишним, и был плохого мнения.
Спасибо за свет в этом мраке! :)

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


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

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
Blackice писал(а):
попробовать gforth? Он 64 битный и возможно "самый стандартный форт в мире". Байндинг к системным апи дожен быть.
Цитата:
Не пошло. Кот в мешке. Потому желательно с поддержкой. :)
Потому сейчас и "дую на воду"...
Тут подкинули ссылку
Давно я на него не обращал внимания.
Посмотрел - забираю свои слова обратно.
Спасибо за совет! :)

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Цитата:
1 Goals of Gforth
The goal of the Gforth Project is to develop a standard model for Standard Forth. This can be split into several subgoals:

Gforth should conform to the Forth Standard.
It should be a model, i.e. it should define all the implementation-dependent things.
It should become standard, i.e. widely accepted and used. This goal is the most difficult one.

:)) :)) :))
"Зачем этот Форт? - Чтобы быть стандартным Фортом! - А что такое стандартный Форт? - Это такой Форт, который описан в стандарте!".

У людей сорвало крышу от неприкаянности? То есть вот я прихожу и спрашиваю, что умеет делать их Форт и зачем он мне может пригодиться. Получаю ответ по сути про бузину в огороде - люди пихаются локтями в междусобойчиках и решают, кому главный лавровый венок, основательно пожухший за последние десятилетия.

Цитата:
Powerful. It should provide for all the things that are considered necessary today and even some that are not yet considered necessary.
Efficient. It should not get the reputation of being exceptionally slow.

"Что такое мощный? Это когда он поддерживает все, что считается сегодня необходимым". Кем считается? Необходимым для чего? Конкретные области применения можно указать, или "мнэээ, ну он это... общего назначения"?
Эффективность определяется как дробь, где вверху эффект, выраженный в технических или экономических величинах, а внизу затраты. Это не хвалебное слово, а показатель, измеряемый и проверяемый.

Риторический вопрос - и что от них можно ждать?


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
"Зачем этот Форт? - Чтобы быть стандартным Фортом! - А что такое стандартный Форт? - Это такой Форт, который описан в стандарте!".

Не нравится, что он реализовывает и следует базису определённому в Анси 94 модели принятого стандарта на язык, а не, к примеру 84,79-года или ещё великое множество вариантов разных Форт от систем Retro вплоть до Machine Forth?
Это (Ansi94) обязательно является плохим признаком для использования тако(й|их) Форт системы?

P.S. Давно же уже проговорено, что лучший Форт, как обычно - это МОЙ Форт! :)
А, крышу пока, как видно из сообщений, срывает у Хищника при упоминании Анси Форта.
(и даже разные реализации Анси "совместимых" Форт систем отличаются по своим бенчмаркам и даже совместимостью)
Имеет смысл понять и принять текущее положение сложившееся в экосистеме вокруг Форт и извлекать пользу не впадая в крайности вынесенных суждений.

Hishnik писал(а):
Риторический вопрос - и что от них можно ждать?

Сначала или с конца @"Понять и простить". :)


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1285
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
Не нравится, что он реализовывает и следует базису определённому в Анси 94 модели принятого стандарта на язык


В Анси 94 много лишних слов, которые являются осколками когда-то использовавшихся технических решений. Например, слово PAD.

Блин, даже сам стандарт это отмечает :))

Цитата:
PAD была доступна как рабочая память для строк начиная с самых ранних Forth реализаций. Было доведено до нашего внимания, что много программистов отказываются от использования PAD, опасаясь несовместимости в системном использовании. PAD конкретно предназначен как удобство для программиста, однако мы документировали факт, что никакие стандартные слова не используют его.


Вот и относись после этого к стандарту как к источнику знаний)

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


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Victor__v писал(а):
Вот и относись после этого к стандарту как к источнику знаний)

А, есть же ещё и ISO стандарт на язык и стандарт Open Boot. :)


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1285
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
Как раз в зависимости от разрядности. Для 32х бит - конвенции х86 все в силе. Для х64 есть несколько конвенций


Видимо, недопонимание.
Что мне мешает, как разработчику, написать DLL под 64 бита, в котором конвенция вызовов Cdecl?
Вы знаете примеры сторонних (не от винды) библиотек под 64 бита, где до сих пор используются конвенции Cdecl, Stdcall без этих вот вариаций с передачей параметров через регистры?

Просто в своём форте я решил оставить слова Stdcall: Cdecl: и пр. на случай, если данные конвенции всё еще могут ипользоваться разработчиками библиотек.

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
Не нравится, что он реализовывает и следует базису определённому в Анси 94 модели принятого стандарта на язык

Не нравится сам факт претензии частных разработчиков на обобщение того, о чем они имеют смутное представление. Формулировка такой цели - попросту заявление вида "хотим быть тут главными". Это в корне противоречит идее, что Форт - простой в разработке язык. Какое уж тут главенство?

KPG писал(а):
А, крышу пока, как видно из сообщений, срывает у Хищника при упоминании Анси Форта.

Пока что эта реакция не сильно отличается от реакции на деление на ноль. Особенно когда человек делить и не пытается, а попросту выписывает дроби с нулем в знаменателе на куче бумажек и приговаривает, что сейчас надо это распространить.

KPG писал(а):
Имеет смысл понять и принять текущее положение сложившееся в экосистеме вокруг Форт

Экосистема предполагает сформировавшуюся взаимную поддержку поставщиков инструментов, разработчиков конечных продуктов и пользователей. Экосистема вокруг Android или iOS обусловлена тем, что люди покупают такие смартфоны, потому что уверены, что они будут и дальше выпускаться, и для них напишут софт. Разработчики софта уверены, что надо писать, потому что будут и дальше появляться смартфоны, а люди будут их покупать. Производители уверены, что новые смартфоны купят, и для них напишут софт.

А что в Форте? Экосистемы как установившегося процесса обновления трансляторов нет, за неимением постоянного спроса. Потому и подходить к Форту с мерками "почти Microsoft, только маленький" бессмысленно.


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

Зарегистрирован: Чт июн 03, 2021 16:13
Сообщения: 26
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Victor__v писал(а):
Что мне мешает, как разработчику, написать DLL под 64 бита, в котором конвенция вызовов Cdecl?

Абсолютно ничего. Можно даже можете придумать какую-нибудь свою. В таблице экспорта ведь указаны только адресса методов, а то как этот метод получает аргуметы, - его внутренняя организация. Но как следствие, эта длл будет совместима только с вашим фортом. Да и смысл этого? Современные соглашения о вызовах эффективнее. Можно условно сказать что это некие гибриды fastcall + cdecl...

Victor__v писал(а):
Вы знаете примеры сторонних (не от винды) библиотек под 64 бита, где до сих пор используются конвенции Cdecl, Stdcall без этих вот вариаций с передачей параметров через регистры?

Нет не знаю. Конечно же, это не означает что их не может быть. Но я склоняюсь к мысли что их все-таки нет. Когда начался переход на 64 бита? Лет 15 назад, а то и раньше. С тех пор все комиляторы поддерживают новые конвенции. Старые библиотеки просто перекомпилировали да и все.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1285
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Компиляторам, наверно, очень весело по фасткаллу обрабатывать функции с переменным числом параметров)
Ничего сложного, конечно, просто необычно.

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


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

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


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

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


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

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