Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб ноя 18, 2017 00:55

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 06:55 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Тему формально можно было и в форум по программированию разместить, но для меня важнее ее применение к форт-процессорам, поэтому размещаю здесь в "Железе".

Чтобы стало понятно, откуда взлись мои "верхний форт" и "нижний форт". Рассмотрим простейший "эмулятор форт-процессора".

Попробую начать строить такой эмулятор с перечисления ресурсов процессора, которые надо эмулировать (на примере EQUINOX разумеется). Эмулятор строится, естественно на Форте.

1. счетчик программ - PC - просто регистр и пара методов для работы с ним

Код:
    VALUE PC \ определение регистра как переменной
    : ->PC TO PC ;
    : PC++ 1 +TO PC ;



2. Регистр команд - CMD - просто регистр

Код:
    VALUE CMD \ регистр-переменная
    : NIBBLE-1 CMD 1000 / ; \ определение для доступа
    \ к командному нибблу - старшему нибблу в 16-разрядном регистре
    : NIBBLE-2 CMD 1000 / ; \ доступ ко второму нибблу
    \ для префиксных команд

    : next-NIBBLE CMD 10 * 0FFFF AND TO CMD ;
    : next-NIBBLE2 CMD 100 * 0FFFF AND TO CMD ;


(чтобы не было недомолвок - все числа 16-ричные)

3. Стек данных - DST - массив регистров
Код:
    8 CONSTANT DST-WIDTH \ константа, определяющая глубину стека
    \ кому захочется больше - придется переписывать эмулятор заново
    CREATE DST DST-WIDTH CELLS ALLOT \ определяем массив
    VALUE DST-SP \ Stack-Pointer для стека данных
    : DST-PUSH \  data --> число со стека инструментального Форта
    \ записывается в стек эмулируемого процессора
        \ реализацию не пишу потому что это пока еще болванка
    ;
    : DST-POP \  data --> число со стека эмулируемого процессора
    \ записывается в стек инструментального Форта
        \ реализацию не пишу потому что это пока еще болванка       
    ;


4. Стек возвратов - RST - все то же самое, что для DST, но приставка DST в определениях заменяется на RST



5. Арифметическо-логическое устройство - ALU - ALU не содержит регистрров, поэтому для него не определяются переменные, а только функции:

Код:
  : ALU-DUP \ data1,data2 --> rezult
    \ выбор действия по второму нибблу команды
    NIBBLE-2 CASE
       \ только болваню
    END-CASE
  ;

  : ALU-SWAP  \ data1,data2 --> rezult1,rezult2
    \ выбор действия по второму нибблу команды
    NIBBLE-2 CASE
       \ опять только болваню
    END-CASE
  ;

  : ALU-DROP \ data1,data2 --> rezult1
    \ выбор действия по второму нибблу команды
    NIBBLE-2 CASE
       \ опять только болваню
    END-CASE
  ;


Теперь немного о том, как работает эмулируемый форт-процессор.
на VHDL все устроено просто. Есть набор регистров и есть большая логическая функция, которая получает на входе этот регистр и на выходе выдает его новое состояние, которое и записывается в регистр по перепаду тактового уровня на входе.

Чтобы сэмулировать такое поведение придется завести два набора ресурсов процессора. Из одного данные брать, в другой писать, а по "такотовому перепаду" второй копировать в первый, получая таким образом "копию" поведения железного форт-процессора.
Код:
  4 DST-WIDTH RST-WIDTH + + CONSTANT SET-WIDTH
CREATE CPU-SET1 \ определяю первый набор ресурсов
    SET-WIDTH CELLS \ ALLOT
CREATE CPU-SET2 \ определяю второй набор ресурсов
    SET-WIDTH  CELLS \ ALLOT

  : SET.PC \ cpu-set --> PC
     @ ;

  : SET.CMD \ cpu-set --> PC
     1+ @ ;

  : SET.DST.SP \ cpu-set --> DST.SP
     2 + @

  : SET.RST.SP \ cpu-set --> RST.SP
     3 + @

  : SET.DST 4 + \ ;

  : SET.RST [ 4 DST-WIDTH + ] LITERAL + \ ;



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

Когда все записано, остается лишь написать:

Код:
: MAIN-CLK-FRONT
   SET1 CPU-KERNEL -> SET2
   SET2 -> SET1 ;
: GO BEGIN MAIN-CLK-FRONT AGAIN ;


Чтобы эмулятор не просто месил данные внутри SET1 и SET2, надо писать эмуляцию внешней памяти, и внешних устройств.

А для того, чтобы эмулируемый процессор еще и что-то делал, потребуется целевой компилятор и метод для загрузки скомпилированной программы в эмулируемую внешнюю память эмулируемого процессора.

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

п.с. В конце маленький вопросик любителям больших стеков: Какой глубины стека достаточно, чтобы запустить вот такой эмулятор на Форте?
(ожидаемый ответ - пять-сэм, но не двадцать сэм же!)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
А теперь посмотрим, что получится, когда на на эмулируемом форт-процессоре надо написать форт (или что то же самое, сделать форт для форт-процессора).

А получится, что в памяти для форт-процессора надо строить структуру подобную той, что была сделана для форт-процессора. С той лишь разницей, что вместо системы команд процессора надо сразу же делать адресный интерпретатор и определять форт-слова.

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

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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 12:47 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4831
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 52 раз.
И все же это грабли, не нужно делать интерпретатор форта поверх железного форта, это дикая несуразица, которая еще неоднократно отыграется на разработчике. Проигрыш очевиден, это и увеличение сложности (совсем неоправданное), и потеря производительности, и потеря однозначности времен исполнения, и совсем необоснованная потеря памяти. Выигрыша вообще не видно ;(
Почему так делается мне совершенно непонятно, в конце концов можно сделать более мощный процессор (по системе команд), сделать сохранение кадров стеков в память (как уже делалось в железных форт-процессорах).
Может все-таки почитать классику Stack Computers: the new wave?

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 14:29 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
Проигрыш очевиден,



абсолютно не очевиден.

mOleg писал(а):
это и увеличение сложности (совсем неоправданное),


В железном форте интерпретатора (языкового, но не адресного) нет, а он нужен, так что, все оправдано.

mOleg писал(а):
и потеря производительности,


А это-то с какого перепуга вдруг? исполнение процессорных команд dup/drop/swap как-то замедлится? Или кажется, что главная вычислительная программа, для которой и нужна скорость, будет интерпретироваться из исходников в процессе измерения?


mOleg писал(а):
и потеря однозначности времен исполнения,


Тут хочется повторить (с модификацией) вопрос Хищника - В каком именно месте моего проекта будет эта потеря?

mOleg писал(а):
в конце концов можно сделать более мощный процессор (по системе команд)


В данном случае - это равносильно "переделать все с самого начала" - а оно мне совсем не нужно. когда окажется, что семи ядер мало и частоты в 200MHz не достаточно, тогда и буду переделывать.

mOleg писал(а):
и совсем необоснованная потеря памяти.

Какая именно память прибора теряется?
Вариантов всего 3:
1. кусок от 64Mb SD-RAM
2. кусок от 4Mb программной флешки
3. кусок от 64Mb NAND конфигурационной флешки
Про внутренню память ПЛИС не упоминаю, потому что это оперативная память, которую можно перегружать когда угодно и сколько угодно раз.

mOleg писал(а):
Может все-таки почитать классику Stack Computers: the new wave?


А почему рекомендация не включает в себя начало чтения с букваря?
Ведь, раз уж предполагать, что я ничего не читал, то надо сразу по максимуму!

И уж-жасно хочется ответить, что "чукча писатель, а не читатель".

mOleg писал(а):
И все же это грабли


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

Прикладывать к прибору IBM PC для запуска на нем целевого компилятора - совершенно неинтересно, хотя на первом этапе и приемлемо.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 14:34 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
--- выдрано из соседней темы ---

Гость писал(а):
Там яркий пример необходимости этой самой "поллитры".


Алкашам мои посты читать совсем не обязательно.
И отвечать на них им тоже не рекомендуется.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 14:49 
WingLion писал(а):
Алкашам мои посты читать совсем не обязательно.
И отвечать на них им тоже не рекомендуется.
Ну, во первых, клевета - это статья. А, во-вторых, как правильно заметил коллега mOleg, больно видеть, как Вы бьетесь головой о стену. Это производит удручающее впечатление на тех, кто пытается найти в Forth плюсы, а не минусы.
Gudleifr, 07.05.12


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 14:59 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Гость писал(а):
Ну, во первых, клевета - это статья.


как самокритично...

Гость писал(а):
А, во-вторых, как правильно заметил коллега mOleg, больно видеть, как Вы бьетесь головой о стену.


Ну так отвернитесь и не смотрите, коли больно! А я всего лишь задачу свою решаю, и записываю в форуме мысли, которые не хочу забыть. А заодно и подсказок жду от тех, кто может что-то подсказать.

Гость писал(а):
Это производит удручающее впечатление на тех, кто пытается найти в Forth плюсы, а не минусы.


Гость писал(а):
клевета - это статья.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 15:03 
WingLion писал(а):
А заодно и подсказок жду от тех, кто может что-то подсказать.
Зачем ждете? Чтобы забанить? Прислушайтесь лучше к тому, что Вам подсказывают.
Gudleifr?, 07.05.12


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 15:05 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Неконструктивные подсказки игнорируются.

А бан вы (и все остальные, кто получил) получили по собственному желанию.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 15:09 
WingLion писал(а):
Неконструктивные подсказки игнорируются.
Не знаю, чем помочь. Первоисточники Вы игнорируете. Прямые указания на ошибки считаете неконструктивными. Может, посмотреть на широко известные аналоги, например, на ту же "Катану"?
Gudleifr?, 07.05.12


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 15:13 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Гость писал(а):
Первоисточники Вы игнорируете.


Вранье.

Гость писал(а):
Прямые указания на ошибки считаете неконструктивными.


Цитата:
- у тебя ничего не выйдет -
- форт на форте не пишется -

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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 15:32 
WingLion писал(а):
Вранье.
Это тоже вранье. Например, та же "Катана", например, нас учит:
1. Процессор должен минимизировать время выполнения основного цикла системы.
2. Процессор для аппаратной реализации некоего языка совсем не обязан внутри работать на этом языке.
WingLion писал(а):
у тебя ничего не выйдет
Тут важно, "почему", а эту часть Вы игнорируете.
WingLion писал(а):
форт на форте не пишется
Это, действительно, факт. Между "написан на Forth" и "написан на себе" есть разница, которую Вы не улавливаете.
Gudleifr, 07.05.12


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 16:04 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Гость писал(а):
1. Процессор должен минимизировать время выполнения основного цикла системы.
2. Процессор для аппаратной реализации некоего языка совсем не обязан внутри работать на этом языке.


Вы считаете, что про банальности надо обязательно читать у Ленина?

Гость писал(а):
Тут важно, "почему", а эту часть Вы игнорируете.


Не игнорирoвать то, чего нет, невозможно.

Гость писал(а):
Это, действительно, факт. Между "написан на Forth" и "написан на себе" есть разница, которую Вы не улавливаете.


Когда "себе" = "Форте" - разницы и нет.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-на-Форте
СообщениеДобавлено: Пн май 07, 2012 16:17 
WingLion писал(а):
Вы считаете, что про банальности надо обязательно читать у Ленина?
Классики на то и классики, что у них не банальности, а общепризнанные истины. Вы можете сколько угодно обзывать решения предшественников банальными и устаревшими, но если они, в отличие от Ваших, работают, то имеет смысл что-то поменять.

WingLion писал(а):
Не игнорирoвать то, чего нет, невозможно.
Почему же? Вам неоднократно и разные люди пытались все подробно объяснить.

WingLion писал(а):
Когда "себе" = "Форте" - разницы и нет.
Я и пишу: "Не улавливаете". Это та самая, упомянутая "черная магия", о которой писалось выше. Объяснить это трудно, так что подождите, пока я допишу соответствующий раздел базы данных.
Gudleifr, 05.07.12


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Гость писал(а):
Классики на то и классики, что у них не банальности, а общепризнанные истины. Вы можете сколько угодно обзывать решения предшественников банальными и устаревшими, но если они, в отличие от Ваших, работают, то имеет смысл что-то поменять.


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

Мои решения работают, а ваши предложения требуют, чтобы я бросил недоделанное на середине, потому что

Гость писал(а):
Объяснить это трудно


Коли трудно - не объясняйте! У вас все равно не получится (объяснить)! Вы же Форт на Форте ни разу не написали, ибо считаете сие невозможным.


Гость писал(а):
Вам неоднократно и разные люди пытались все подробно объяснить.


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


Гость писал(а):
Это та самая, упомянутая "черная магия", о которой писалось выше.


Вся ваша "черная магия" заключается в утверждении, что "это трудно - и ничего не выйдет". Это и вправду, ЧЕРНЕЙШАЯ ЧЕРНОТА. Ваша личная. И нечего тут своих крокодильчиков везде разбрасывать.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

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


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

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


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

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