Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт июн 25, 2019 23:40

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Пн мар 11, 2019 16:13 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 819
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Раз споры поутихли, продолжу писать.
Коснёмся различных механизмов.

Мне нравилось в СПФ то, что слова при компиляции разворачиваются (инлайнятся), а не, собственно, компилируются.
Поэтому в Нове также появилась поддержка инлайна.
Чтобы не городить огород с развёрткой слов, оперирующих стеком возвратов, как это по ходу было сделано в СПФ (к примеру для R> >R в ядре имеются отдельные инлайн-примитивы), в Нове был запилен шаблон для этих слов.
Код:
Шаблон: pop reg ... jmp reg
Шаблон для обычных слов: ... ret

Но развёртка кода при упоминании слова в режиме компиляции несколько медлительна (собственно развёртка + компиляция).
В связи с этим с версии (вспомнить какая) длина кода некоторых инлайн-слов хранится в поле флагов (2 байта, есть где разгуляться).

Стоит коснуться и вопроса "а нафига вообще нужен инлайн?"
  • Сразу отметаем скорость и производительность, поскольку в форте это быстро скатывается к теме "поговорить за жизнь, упоминая стандарты" и пагубному брожению умов.
  • Другой интересный момент это размер разворачиваемого кода. Обычно, этот размер либо равен, либо меньше инструкции вызова.
  • И естественно just for fun (просто ради удовольствия), этот аргумент несколько отрезвляет некоторых читателей сих мыслей.

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

Также в СПФ мне понравилась развёртка параметрических слов (переменных, векторов, там всяких).
В начале в Нове это тоже было. Но перфекционист внутри меня возмутился постоянному допросу слов на предмет наличия в них вызова параметрического слова.
Поэтому потом все параметрические слова метились своим флагом. Но полученный в результате механизм не был расширяемым.
В итоге я глубокомысленно отпустил эту идею в свободное плавание, оставшись без развёртки параметирических слов.
Элегантное решение так и не нашёл.

Теперь коснёмся одной очень неоднозначной вещи - таблице предкомпиляции.
Как можно или нельзя догадаться из названная, данная вещь должна была влиять на процесс компиляции. К примеру, отслеживать операции со стеком возвратов для корректности работы локальных переменных.
Но у таблицы были недостатки.
Самый главный из которых, на мой взгляд, отсутствие гибкости.
Если обработчик был добавлен из временного словаря, то при отключении оного при определённых условиях таблица может спровоцировать вылет.

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

Возможно когда-нибудь вернусь к таблице, к этому глобальному "реестру" форт-слов, если возникнет необходимость.
Некоторые могут счесть, что это попахивает "форт-ОС", но рассуждения об этом здесь излишни.

Стек окружений (стек поиска путей к файлам).
Ещё одна из вещей, которая мне понравилась в СПФ это автоподключение каталога DEVEL/
Однако путём медитации над исходниками мой скромный разум так и не смог узреть как это происходит в СПФ.
Поэтому я, без зазрения совести, написал свой вариант подключения каких-либо каталогов для поиска файлов.
Кроме удобства стек окружений облегчает портирование, поскольку не надо переписывать INCLUDED'ы

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6676
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
Victor__v писал(а):
Но развёртка кода при упоминании слова в режиме компиляции несколько медлительна (собственно развёртка + компиляция).
В связи с этим с версии (вспомнить какая) длина кода некоторых инлайн-слов хранится в поле флагов (2 байта, есть где разгуляться).

А все-таки почему не сделано вычисление размера слова? Вот например:

Код:
LFA1   - вот это слово нам надо
...
Начинается его код
RET
LFA2


И тут маленькая добавка при поиске заключается в том, что при нахождении LFA1 также запоминается и LFA2 (это просто следующее слово в словаре, но просмотрено оно было до LFA1). Собственно, и размер слова для инлайна - от начала его кода до LFA2, за вычетом размера инструкции RET.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 819
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Hishnik писал(а):
А все-таки почему не сделано вычисление размера слова? Вот например:

Код:
LFA1   - вот это слово нам надо
...
Начинается его код
RET
LFA2


И тут маленькая добавка при поиске заключается в том, что при нахождении LFA1 также запоминается и LFA2 (это просто следующее слово в словаре, но просмотрено оно было до LFA1). Собственно, и размер слова для инлайна - от начала его кода до LFA2, за вычетом размера инструкции RET.

Ну, размер большинства слов вычисляется при метке слова флагом INLINE и после записывается в поле флагов.

А Ваш написанный подход мне не подходит, поскольку в Нове при компиляции слова сначала компилируется (да блин, пресвятая тавтология!) имя слова, а после этого словарная статья.
И тогда до LFA будет не нужные в этом случае сведения.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Пн мар 18, 2019 17:27 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 819
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Да простят меня опытные товарищи за моё техническое иноязычие :)

Планирование
Я не слишком сильно планировал процесс разработки форта.
Инлайн, поиск в словаре и прочие полезности я таки как раз продумывал и тестировал, но в остальном дела были так себе.
В процессе написания ядра Новы некоторые библиотеки костылились, заменялись и пр. В общем было весело.
Возможно, Нова состоялась только благодаря планированию, пусть и не полному.
Лучше всё же планировать, поскольку это снижает вероятность провала.
Возможно с фортом сыграло и то, что имя будущей системы я хранил в тайне, чтоб не сглазить :)
Впрочем, пройтись по граблям тоже полезный опыт.

Образ
Изначально образ форта собирался на СПФ. При этом собирался он на как бы виртуальные адреса (предложите термин получше) т. е. адрес начала форт-образа к примеру 0х00402000, а его реальный адрес к примеру 0х10203050. И ЦК компилирует слова по реальному адресу, автоматом считая, что он пляшет от 0х00402000. Это весьма полезно при использовании абсолютной адресации внутри образа.
При этом прописав в виртуальный адрес реальный в последствии можно было получить действующий образ форта внутри другого форта.
Это помогало мне в отладке.

Совместимость.
В Нову изначально вкладывалась совместимость с СПФ. Этому была только одна причина - библиотеки последнего.
Итоговая совместимость средняя или ниже на мой взгляд. Слой совместимости также писался. Но приходилось всё-таки переписывать некоторые СПФ-ные части либ, из-за новых возможностей. К примеру, в библиотеке ~yz/lib/automate.f использовался нотфоунд. Пришлось переделывать.
Совместимость со всем остальным не планировалась. Те же стандарты пошли лесом, поскольку они на мой неискушённый взгляд не позволяют мне портировать что-то полезное. Да и некоторые вещи на практике проще самому реализовать/подсмотреть(я про ассемблер и дизассемблер счас).

Просьба не устраивать очередной виток обсуждения форт-стандартов.

Если на основе стандартов написана какая-либо полезная наработка, просьба дать ссылку. Желательно, чтобы ссылка вела на прикладуху. Сопрограммы с лямбдами я так реализовывать могу.

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6676
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
Victor__v писал(а):
Планирование
Я не слишком сильно планировал процесс разработки форта.
Инлайн, поиск в словаре и прочие полезности я таки как раз продумывал и тестировал, но в остальном дела были так себе.
В процессе написания ядра Новы некоторые библиотеки костылились, заменялись и пр. В общем было весело.

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

Victor__v писал(а):
Изначально образ форта собирался на СПФ. При этом собирался он на как бы виртуальные адреса (предложите термин получше) т. е. адрес начала форт-образа к примеру 0х00402000, а его реальный адрес к примеру 0х10203050. И ЦК компилирует слова по реальному адресу, автоматом считая, что он пляшет от 0х00402000. Это весьма полезно при использовании абсолютной адресации внутри образа.

Пара адресов "база + смещение" в архитектуре Intel называется линейным адресом. Термин виртуальный адрес тоже существует. В целом можно почитать что-то вокруг понятий "физический адрес", "логический адрес".

Когда я генерировал код из СПФ, меня несколько насторожили фиксированные смещения. На практике это вроде бы никому не мешало, но формат PE в Win95 подразумевал, что в файле есть таблица релокаций. А вот в СПФ ее не было, и программы для просмотра PE-файлов выдавали ошибки. Вполне может быть, что оно и будет работать, но тогда (1996) мне это не очень понравилось, поэтому я перешел к ассемблерам от СПФ.

Victor__v писал(а):
Просьба не устраивать очередной виток обсуждения форт-стандартов.

Безотносительно конкретных характеристик Новы, автор собственной реализации форта всегда имеет принципиальное преимущество над теми, кто ограничен только выбором между уже существующими.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Вт мар 19, 2019 08:42 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 45
Благодарил (а): 6 раз.
Поблагодарили: 2 раз.
Hishnik писал(а):
Когда я генерировал код из СПФ, меня несколько насторожили фиксированные смещения. На практике это вроде бы никому не мешало, но формат PE в Win95 подразумевал, что в файле есть таблица релокаций. А вот в СПФ ее не было, и программы для просмотра PE-файлов выдавали ошибки. Вполне может быть, что оно и будет работать, но тогда (1996) мне это не очень понравилось, поэтому я перешел к ассемблерам от СПФ.

Со смещениями проблем как раз быть не должно. Проблемы могут быть с абсолютными адресами.
В исполняемом файле указывается т.н. Image Base - адрес, по которому, как предполагает компоновщик, ОС загрузит программу. Так как в защищённом режиме каждый процесс имеет своё адресное пространство, то для разных процессов эти адреса могут совпадать. Как правило, компоновщики устанавливают Image Base в 0x00400000. В таблицу релокации попадают абсолютные адреса, которые зависят от Image Base: адреса функций и глобальных переменных. Они корректируются при загрузке EXE по адресу, отличному от указанного в файле. Не знаю, попадают ли туда абсолютные адреса, записанные в качестве данных в секции .data.
Если адреса нет в таблице релокации, то возможны проблемы:
- при загрузке программы или DLL другой программой в своё адресное пространство (например, через LoadLibrary);
- при оптимизации Image Base имеющихся PE-файлов утилитой из Windows SDK... забыл как называется и не смог сходу найти... короче, она изменяет в исполняемых файлах Image Base и релоцируемые адреса так, чтобы на этапе запуска релокации не происходило.
Со смещениями (безсловные и услвные переходы по JMP и Jcc, а также относительные адреса при обращении к данным) проблем быть не должно.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 819
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Hishnik писал(а):
Конечно, всеми силами привязываться к каким-то пунктам не стоит. Часто планирование происходит именно стихийно, а при экспериментальной разработке довольно много всяких "если вот это получится, то будет так". Нужно просто останавливать себя при мыслях "ну все, мне нравится, теперь надо осчастливить весь мир". Но если таких мыслей нет, а экспериментальная программа именно так и понимается, то отсутствие четкого плана на все-все случаи вполне нормально.

Я бы не назвал Нову экспериментом. В конце концов я её написал для замены СПФэ в своём увлечении форта :)
Замечу, что форт-системы писавшиеся в качестве эксперимента так и не оформились. Достаточно по форуму полазить, мёртвых анонсов хватает-с.


Hishnik писал(а):
Когда я генерировал код из СПФ, меня несколько насторожили фиксированные смещения. На практике это вроде бы никому не мешало, но формат PE в Win95 подразумевал, что в файле есть таблица релокаций. А вот в СПФ ее не было, и программы для просмотра PE-файлов выдавали ошибки. Вполне может быть, что оно и будет работать, но тогда (1996) мне это не очень понравилось, поэтому я перешел к ассемблерам от СПФ.


С относительными адресами проблем нет. Релокация им не нужна. Беда начинается с абсолютными, ибо их надо пересчитывать.
Впрочем, зачем сейчас нужна релокация? Только для DLL наверно и нужна

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6676
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
zma писал(а):
Если адреса нет в таблице релокации, то возможны проблемы:
- при загрузке программы или DLL другой программой в своё адресное пространство (например, через LoadLibrary);
- при оптимизации Image Base имеющихся PE-файлов утилитой из Windows SDK... забыл как называется и не смог сходу найти... короче, она изменяет в исполняемых файлах Image Base и релоцируемые адреса так, чтобы на этапе запуска релокации не происходило.
Со смещениями (безсловные и услвные переходы по JMP и Jcc, а также относительные адреса при обращении к данным) проблем быть не должно.

Victor__v писал(а):
С относительными адресами проблем нет. Релокация им не нужна. Беда начинается с абсолютными, ибо их надо пересчитывать.
Впрочем, зачем сейчас нужна релокация? Только для DLL наверно и нужна

Да, именно. В конце концов, СПФ ни разу не отказывался запускаться по этой причине. Однако с учетом того, что какие-то программы рассчитывают найти в наших PE таблицу релокации, может возникнуть нехорошая ситуация. Сейчас вот антивирусы "не любят" скомпилированный ассемблером Форт. Кто знает, какие еще неожиданные эффекты могут возникнуть. Поэтому в таких случаях хочется иметь понимание и "запасной план".

Victor__v писал(а):
Я бы не назвал Нову экспериментом. В конце концов я её написал для замены СПФэ в своём увлечении форта

В этом смысле СПФ крайне полезен :)) Действительно, написать свой форт - это своего рода "визитная карточка для прохода в клуб".

Victor__v писал(а):
Замечу, что форт-системы писавшиеся в качестве эксперимента так и не оформились. Достаточно по форуму полазить, мёртвых анонсов хватает-с.

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 819
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Hishnik писал(а):
В этом смысле СПФ крайне полезен :)) Действительно, написать свой форт - это своего рода "визитная карточка для прохода в клуб".

Не, ну и шо :D
Меня явно вело провидение яндекса. Иначе как объяснить выбор самого распространённого форта в России) и последующую работу именно на нём
Про другие форты я и не думал тогда и уж потом мне открылись кварк, форк, гну-форт, 8-й...

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6676
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
Victor__v писал(а):
Меня явно вело провидение яндекса. Иначе как объяснить выбор самого распространённого форта в России) и последующую работу именно на нём

СПФ мне понравился тем, что из всей коллекции Фортов (еще на CD-ROM) позволял передать файл прямо в командной строке. Все остальные заставляли вводить команды в консоль. Это, конечно, позволяло изучить, проникнуться духом и тому подобное, но мне-то надо было для работы. Поэтому СПФ 2.02 единственный на тот момент произвел впечатление практического продукта.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Ср май 08, 2019 19:42 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 819
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Сейчас пишется очередная версия Новы.
На этот раз решил использовать разделение кода, данных, и словарных статей.
Всё-таки возможные преимущества очень заманчивы.
К примеру, если производному приложению не нужна будет словарная структура, то её можно будет легко почикать, буквально поменяв адрес старта форт-системы в исполняемом файле.

Из-за раздельного хранения был взят курс на снижение числа параметрических слов.
Приходится немного поизголяться с TO и FROM.
А в ЦК ещё веселей: надо завести учёт всех бывших параметрических слов (VALUE VECT USER-VALUE и пр.) для корректной компиляции. Короче, ещё одна необходимая рутина.

Отдельного упоминания требуют словари.
Это тоже параметрические слова... были.
А это значит, что сложнее будет найти путь из вложенных словарей (на самом деле нужная задача, если рассматривать каждый словарь как ветвь дерева с данными).
По этой причине в новой версии будет больше слов достающих из скомпилированного кода данные.
Сейчас есть
GET-CALL дающий указатель на код по адресу
будет ещё
GET-LIT \ addr -- n flag
и
IS-VOC? \ lfa -- lfa flag
Этого достаточно, чтобы определить "словарность" слова.

Также раздельное хранение позволяет словам иметь по несколько полей кода, что позволяет организовать поведение по умолчанию, необычное поведение и проч.
К примеру, слово SFIND будет снабжена доп. кодом, выдающим только LFA слова, а не флаги и указатель на код.
Такая же учесть постигла слова для работы с кодофайлом. У них есть доп. код, позволяющий работать с пространством данных.
Однако стоит ли их наделять ещё и возможностью работы с пространством словарных статей?
Считаю, что нет. Возможно не прав.

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

Вот только как сделать логичнее?
Либо тупо отдельное слово, вызываемое при компиляции, либо ещё одно поле в словаре, отвечающее за контроль пространств.
1-й вариант проще, но 2-й вариант гибче. Осталось понять,нужна ли вообще подобная гибкость.

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


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

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 549
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Вот ты бы сделал такую простую вещь. Выложил бы исходник как на какой-то конкретной версии Нова сделать GUI-EXE-программу создающую простейшее пустое окно и чтобы EXE-шник имел иконку в ресурсах. Просто разбираться с исходником Новы долго. А имея такой образчик "делай как я" можно было бы что-нибудь небольшое на Нове быстро написать и при этом как бы ее заценить.


Последний раз редактировалось Ethereal Пн май 27, 2019 01:37, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Вс май 26, 2019 23:44 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 819
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Ethereal писал(а):
Вот ты бы сделал такую просую вещь. Выложил бы исходник как на какой-то конкретной версии Нова сделать GUI-EXE-программу создающую простейшее пустое окно и чтобы EXE-шник имел иконку в ресурсах. Просто разбираться с исходником Новы долго. А имея такой образчик "делай как я" можно было бы что-нибудь небольшое на Нове быстро написать и при этом как бы ее заценить.

Я для Гуя использовал для теста библиотеку IUP, насчёт иконки ни разу этим не заморачивался.
Даже удивляюсь зачем она вообще нужна в EXE-шнике, если пользователи итак будут тыкать по ярлыку, в котором уже можно назначить ту самую иконку?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Пн май 27, 2019 01:57 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 549
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Иконка здесь был частный случай произвольного ресурса. Не иконка ну так ресурс с меню. Ну раз нету, так нету. А вот окно было по сути частным случаем посмотреть как у тебя обрабатываются сообщения окну и еще посмотреть как там цикл
Код:
    BEGIN
      0 0 0 msg GetMessageA
    WHILE
      msg
      [ msg CELL + ] LITERAL 2@ [ 9 WM_KEYDOWN DNEGATE ] DLITERAL D+ OR
      IF
            TranslateMessage DROP
        msg DispatchMessageA
      ELSE
            R@ IsDialogMessageA
      THEN
      DROP
    REPEAT
(это фрагмент какой-то моей программулины) выглядит и тем самым посмотреть как функции Win-API вызываются. И еще как EXE-шник сохраняется с переопределенным словом старта. Зная это уже можно что-то пописать попробовать. Имея образец. А без образца тоскливо. Зачем вообще версии выкладывать без такого образца ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova Дневник разработчика
СообщениеДобавлено: Пн май 27, 2019 10:09 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 819
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Учтено, сделаю пример.

Цитата:
И еще как EXE-шник сохраняется с переопределенным словом старта

Слово старта называется как и в СПФ <MAIN> это вектор.

По поводу сохранения.
Это сделано библиотекой во временном словаре, чтобы в кодофайле не отсвечивать.
Адрес старта форт системы всегда 0x00402000

Соот-но, сохранение нового форт-образа:

Код:
..........какой-то код.....

' НОВОЕ-СЛОВО-СТАРТА TO <MAIN>

~er/win/save.f \ подгружаем во временный словарь библиотеку для создания нового форт-образа

S" Супер-пупер программа.exe" SAVE



Для смены типа приложения (консоль на гуй) потребуется внести одно маленькое изменение в библиотеку, но это дело 1-й минуты.

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


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

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


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

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


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

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