Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн апр 22, 2019 13:56

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Обзор темы - Моя система(_KROL)
Автор Сообщение
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
И вот, когда я пытался использовать КШК, у меня возникли с пониманием, как там должно быть организован код на поле исполнение DOES>.
Вот как раз если КШК, то лучше сделать <BUILDS DOES> , потому-что CREATE DOES> тут как серпом по яйцам. CREATE DOES> хорошо для любого другого шитого кода, но не КШК. Не, сделать конечно можно, но не красиво. Придется в словарной статье зарезервировать ячейку, которая будет использоваться только у слов с DOES> и будет бесхозной у всех остальных.
Сообщение Добавлено: Чт апр 18, 2019 22:10
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
ath писал(а):
Если своими словами, есть две реализации DOES>
1. ФигФорта, <BUILDS DOES>
Она мало интересна сегодня, но проще всего реализуется в Гарвардской архитектуре вроде 8051.
2. CREATE DOES>
В общем-то <BUILDS можно свести к
: <BUILDS CREATE CELL ALLOT ;
так-что <BUILDS это почти что CREATE , но все-же не оно.

Из некоего 32-разрядного FIG :
: <BUILDS 0 CONSTANT ;
: DOES> R> LATEST PFA ! (;CODE) ассемблерное_бла_бла
Код:
      ENTRY   7, '<BUILDS', BUILDS
; Used within a colon-definition:
;     : cccc  <BUILDS  ...
;               DOES>  ...  ;
; Each time cccc is executed, <BUILDS defines a new word with a
; high-level execution procedure. Executing cccc in the form:
;     cccc nnnn
; uses <BUILDS to create a dictionary entry for nnnn with a call to
; the DOES> part for nnnn. When nnnn is later executed, it has the
; address of its parameter area on the stack and executes the words
; after DOES> in cccc. <BUILDS and DOES> allow runtime procedures to
; be written in high-level rather than in assembler code (as required
; by ;CODE ).
      DD   DoCOLON
      DD   ZERO, CONSTANT, SEMI_S

      ENTRY   5, 'DOES>', DOES
; A word which defines the run-time action within a high-level
; defining word. DOES> alters the code field and first parameter of
; the new word to execute the sequence of compiled word addresses
; following DOES>. Used in combination with <BUILDS. When the DOES>
; part executes it begins with the address of the first parameter of
; the new word on the stack. This allows interpretation using this
; area or its contents. Typical uses include the Forth assembler,
; multidimensional arrays, and compiler generation.
      DD   DoCOLON
      DD   R_FROM, LATEST, PFA, STORE_
      DD   _SEMI_CODE_
DoDOES:      sub   ebp, 4
      mov   [ebp], esi
      mov   esi, [eax+4]
      push   ebx
      lea   ebx, [eax+8]
      NEXT$
Сообщение Добавлено: Чт апр 18, 2019 21:58
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
ath писал(а):
Как раз этим занимаюсь.

А заниматься надо разъяснением, что имелось в виду под "незаконным преследованием тех, кто соблюдает требования ANS". Даю время до конца недели на приведение фактов, подтвержденных документально, либо принесение извинений подписчикам за сознательное введение в заблуждение. Невыполнение данного требования приведет к блокированию аккаунта. Любое сообщение на посторонние темы вместо затребованного разъяснения - аналогично.
Сообщение Добавлено: Пт мар 15, 2019 20:56
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
И вот, когда я пытался использовать КШК, у меня возникли с пониманием, как там должно быть организован код на поле исполнение DOES>.
На какой тогда код указывает CFA и PFA?
Подскажите, пожалуйста! Быть может я что в этот раз создам интересное... надеюсь :shuffle;

Как раз этим занимаюсь. Есть знание английского? Могу дать ссылки на очень хорошие объяснения, умных людей. :shuffle;

Если своими словами, есть две реализации DOES>

1. ФигФорта, <BUILDS DOES>

Она мало интересна сегодня, но проще всего реализуется в Гарвардской архитектуре вроде 8051.

2. CREATE DOES>

Вот про неё и напишу. Главное правило КШК, что поле кода (CFA) всегда содержит адрес программы в машинном коде. DOES> делает вид для программиста, что обработчик написан на Форте. Но на низком уровне в поле кода всё равно сидит адрес машинного кода, таковы требования КШК.

В теории обработчик слова, созданного CREATE DOES> , должен быть всегда DODOES — но ему необходим параметр, где лежит ШК настоящего высокоуровневого обработчика. Этот ШК скомпилирован после каждого DOES> индивидуально. Поэтому до него компилируется индивидуальный кусочек машинного кода (на него и ставится ссылка в поле кода), запускающий интерпретацию ШК.

Теперь на практике.
Код:
: CONSTANT CREATE , DOES> @ ;
5 CONSTANT FIVE
10 CONSTANT TEN

Компилируются так в КШК:
Код:
Поле имени: 8 "CONSTANT"
Поле кода: CALL ( обычное для всех двоеточий)
Поле параметров:
CREATE
,
(;DOES)
DOCON: ( метка, для полей кода констант)
Машинный код, например JSR DODOES и адрес нашего ШК в стеке
@ ( тут уже наш обработчик пошёл)
EXIT

Поле имени: 4 "FIVE"
Поле кода: DOCON
Поле параметров: 5

Поле имени: 3 "TEN"
Поле кода: DOCON
Поле параметров: 10

Поле связи я не пишу, оно тут роли не играет. Интересно, что (;DOES) одно и тоже как для DOES> так и для низкоуровневого ;DOES
Сообщение Добавлено: Пт мар 15, 2019 19:46
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Как вариант: DOES> среди прочего компилирует в словарь машинный код, который кладёт PFA на стек и устанавливает указатель адресного интерпретатора на ШК за этим кодом. Поле кода создаваемых слов указывает на этот маш. код. PFA как указывал на поле параметров после поля кода, так и продолжает указывать.
Сообщение Добавлено: Чт мар 14, 2019 22:41
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Всем привет! Как время летит, а форт никак не возможно забыть :)
Как знаете, я много раньше эксперементировал, когда писал свою систему. При выборе шитого кода мне больше понравился прямой, т.к. он проще. Однако, косвенный обладает более широкими возможностями, например, к переносу кода и создния модулей. Наверное, поэтому это классический подход для форта.
И вот, когда я пытался использовать КШК, у меня возникли с пониманием, как там должно быть организован код на поле исполнение DOES>.
На какой тогда код указывает CFA и PFA?
Подскажите, пожалуйста! Быть может я что в этот раз создам интересное... надеюсь :shuffle;
Сообщение Добавлено: Чт мар 14, 2019 13:08
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
Что-нибудь скажете? Надо же от чего-то отталкиваться!

В целом это довольно стандартный стартовый набор.

Для практической работы интереснее два других аспекта.
1. Как этот Форт взаимодействует с другими программами. Можно ли его подключить к проекту, у которого есть наглядные, красивые и распространенные вещи. Например, самостоятельно рисовать кнопки или реализовывать сеть в Форте - долго, сложно и не приводит к заметному выигрышу. Проще пользоваться готовыми библиотеками, но для этого надо либо к Форту что-то подключить, либо Форт к чему-то подключить.
2. Как Форт взаимодействует с пользователем и окружением сам по себе. Есть только консоль? И всегда только консоль? Как он открывает-закрывает файлы?
В целом, эти пункты (и даже один из них) могут быть основанием для того, чтобы еще раз написать "базовый набор слов" самостоятельно.
Сообщение Добавлено: Ср июн 06, 2018 01:16
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
Правда пока только голый скелет.

Я не видел пока удачной реализации форта на Си 8(
Сообщение Добавлено: Вт июн 05, 2018 17:57
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
В целом, ФВМ оказывается просто делать на ЯВУ :)
Правда пока только голый скелет.
Вот все доступные у меня (на текущий момент) программе примитивы:
Код:
#define opNum 26

void *Op[opNum] =
{
   nop,
   reset,
   execute,
   branch,
   nbranch, // 5
   drop,
   dup,
   swap,
   to_r,
   from_r, // 10
   load,
   store,
   move,
   compare,
   plus, // 15
   minus,
   multiply,
   divide,
   and,
   or, // 20
   xor,
   neq0,
   lw,
   ulw,
   key, // 25
   emit
};
Что-нибудь скажете? Надо же от чего-то отталкиваться!
Сообщение Добавлено: Пн июн 04, 2018 11:38
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
Да нет, я не про "детское" программирование)
Именно про него! Взрослое программирование - это умение взрослого инженера скормить свою задачу компьютеру с наименьшими затратами. Взрослое "просто программирование" - без привязки к конкретным инженерным проблемам - оно же системное, предполагает владение математикой и/или электроникой "чуть" более, чем в объеме профильного ВУЗа.

_KROL писал(а):
Всё, теперь понятно как мне лучше и понятнее свой Форт писать.
Опять пугаете? Успокойтесь, т.к. Вам изначально "нечего сказать", а учиться Вы не хотите, то ничего интересного для других Вы никогда не напишете. Обломаетесь и будете, как большинство присутствующих, авторитетно надувать щеки: мол, видел ваш FORTH, писал, ничего особо интересного...
Сообщение Добавлено: Ср фев 07, 2018 16:20
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
Всё! Флудить не буду, и так его тут много.
Сообщение Добавлено: Ср янв 31, 2018 22:23
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
mOleg писал(а):
_KROL писал(а):
Ну это лишь идея... Спасибо!

Тут хочется вот что сказать, представь,
играет музыка танцевальная, а ты выходишь, и начинаешь танцевать под другую музыку.
На сколько это будет выглядеть эстетично, красиво, уместно?
Ты ещё моей музыки не слышал)) Поэтому такими стрёмными эксперементами я занимаюсь лишь мысленно ;)
KPG писал(а):
Интерпритация данных слов встречается в некоторых Форт системах, как сокращение аналогов стандартных слов LSHIFT и RSHIFT
Я знаю, даже у меня раньше было так.
Сообщение Добавлено: Ср янв 31, 2018 22:20
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
...
Т.о.
<< ( addr sz -- flag) \ записать блок информации куда-то
>> ( addr maxsz -- ) \ считать блок информации

Интерпритация данных слов встречается в некоторых Форт системах, как сокращение аналогов стандартных слов LSHIFT и RSHIFT
Сообщение Добавлено: Ср янв 31, 2018 21:34
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
"DOS" в начале подразумевает, что может быть какой-нибудь BIOSIO или UNIXIO, и т.д.

Не валите все в одну кучу. Переключением источников слов занимается не СИМВОЛ (частью которого является WORD) а ОК. Оптимизация им. Баранова&Ноздрунова (по переключению TIB/BLOCK) это уже излишние усложнения, которыми будет смысл заниматься, когда Вы поймете, зачем нужны и СИМВОЛ и ОК по отдельности.
Но, как сказал один наш знакомый, Вы можете продолжать плясать с бубном, пытаясь попасть в такт "общепринятых ритмов".
Сообщение Добавлено: Ср янв 31, 2018 20:28
  Заголовок сообщения:  Re: Моя система(_KROL)  Ответить с цитатой
_KROL писал(а):
Ну это лишь идея... Спасибо!

Тут хочется вот что сказать, представь,
играет музыка танцевальная, а ты выходишь, и начинаешь танцевать под другую музыку.
На сколько это будет выглядеть эстетично, красиво, уместно?

Язык, тоже по-своему музыка, и если ты "танцуешь" используя его ритмы, то твои движения выглядят органично, и сами подчеркивают мелодию, а если ты "танцуешь" другую мелодию (другой ритм), то - неуместно или ужасно не эстетично.
Это не значит, что ты не можешь продолжить мелодию, ввести новый ритм и движения, но должен быть вкус, что ли.
Сообщение Добавлено: Ср янв 31, 2018 19:35

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


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