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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - битовые накопительные массивы
Автор Сообщение
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Компиляторам, наверно, очень весело по фасткаллу обрабатывать функции с переменным числом параметров)
Ничего сложного, конечно, просто необычно.
Сообщение Добавлено: Чт фев 17, 2022 17:42
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Victor__v писал(а):
Что мне мешает, как разработчику, написать DLL под 64 бита, в котором конвенция вызовов Cdecl?

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

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

Нет не знаю. Конечно же, это не означает что их не может быть. Но я склоняюсь к мысли что их все-таки нет. Когда начался переход на 64 бита? Лет 15 назад, а то и раньше. С тех пор все комиляторы поддерживают новые конвенции. Старые библиотеки просто перекомпилировали да и все.
Сообщение Добавлено: Чт фев 17, 2022 16:13
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
KPG писал(а):
Не нравится, что он реализовывает и следует базису определённому в Анси 94 модели принятого стандарта на язык

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

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

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

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

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

А что в Форте? Экосистемы как установившегося процесса обновления трансляторов нет, за неимением постоянного спроса. Потому и подходить к Форту с мерками "почти Microsoft, только маленький" бессмысленно.
Сообщение Добавлено: Чт фев 17, 2022 11:35
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Цитата:
Как раз в зависимости от разрядности. Для 32х бит - конвенции х86 все в силе. Для х64 есть несколько конвенций


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

Просто в своём форте я решил оставить слова Stdcall: Cdecl: и пр. на случай, если данные конвенции всё еще могут ипользоваться разработчиками библиотек.
Сообщение Добавлено: Чт фев 17, 2022 09:59
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Victor__v писал(а):
Вот и относись после этого к стандарту как к источнику знаний)

А, есть же ещё и ISO стандарт на язык и стандарт Open Boot. :)
Сообщение Добавлено: Чт фев 17, 2022 09:55
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Цитата:
Не нравится, что он реализовывает и следует базису определённому в Анси 94 модели принятого стандарта на язык


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

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

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


Вот и относись после этого к стандарту как к источнику знаний)
Сообщение Добавлено: Чт фев 17, 2022 09:40
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Hishnik писал(а):
"Зачем этот Форт? - Чтобы быть стандартным Фортом! - А что такое стандартный Форт? - Это такой Форт, который описан в стандарте!".

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

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

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

Сначала или с конца @"Понять и простить". :)
Сообщение Добавлено: Чт фев 17, 2022 09:21
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Цитата:
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.

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

Риторический вопрос - и что от них можно ждать?
Сообщение Добавлено: Чт фев 17, 2022 00:40
  Заголовок сообщения:  Re: gforth  Ответить с цитатой
Blackice писал(а):
попробовать gforth? Он 64 битный и возможно "самый стандартный форт в мире". Байндинг к системным апи дожен быть.
Цитата:
Не пошло. Кот в мешке. Потому желательно с поддержкой. :)
Потому сейчас и "дую на воду"...
Тут подкинули ссылку
Давно я на него не обращал внимания.
Посмотрел - забираю свои слова обратно.
Спасибо за совет! :)
Сообщение Добавлено: Чт фев 17, 2022 00:23
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
KPG писал(а):
Victor__v писал(а):
ИМХО, gforth вариант не для всех.

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

Мануал у неё объёмный https://gforth.org/manual/
Хм. До этого я пользовался неким вариантом давнишним, и был плохого мнения.
Спасибо за свет в этом мраке! :)
Сообщение Добавлено: Чт фев 17, 2022 00:10
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
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Гб...
Сообщение Добавлено: Ср фев 16, 2022 15:39
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Victor__v писал(а):
Что конкретно переносить? Есть примеры?

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

к примеру Minos GUI появившеюся с VFX Forth, слой работы с SDL, OpenGL, callback, ffi, Gray parser ...
Сообщение Добавлено: Ср фев 16, 2022 14:23
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
KPG писал(а):
Дааа! :)
а также переноса решений опробованных в рамках gForth в свою Форт систему.


Что конкретно переносить? Есть примеры?
Сообщение Добавлено: Ср фев 16, 2022 14:06
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
Victor__v писал(а):
gForth полезен для проверки решений сделанных на gForth?
Гениальный аргумент.

Дааа! :)
а также переноса решений опробованных в рамках gForth в свою Форт систему.
Сообщение Добавлено: Ср фев 16, 2022 13:16
  Заголовок сообщения:  Re: битовые накопительные массивы  Ответить с цитатой
KPG писал(а):
В плане проверки работоспособности каких то решений (слов) реализванных в gForth
тоже может быть полезна как и другая какая то Форт система даже если не нацеливаться на её использование как основы.


gForth полезен для проверки решений сделанных на gForth?
Гениальный аргумент.
Сообщение Добавлено: Ср фев 16, 2022 12:17

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


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