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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 150 ]  На страницу 1, 2, 3, 4, 5 ... 10  След.
Автор Сообщение
 Заголовок сообщения: Всеобщий ассемблер для форта?
СообщениеДобавлено: Ср июн 27, 2007 20:52 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Для того, чтобы реализовать форт, нуно не так много операций.
И для того, чтобы описать процессор, нужно не так много ... типов операций :?
Возможен ли такой мета-ассемблер, на котором можно было бы реализовать любой ассемблер (или нужные операции любого ассемблера), просто подставив некоторые значения для нужного процессора.

Ну, например, скажем для умножения в х86 пригоден только определённый регистр

поэтому для * описание операции метаассемблера должно была бы
состоять из
полей


операция __________________ *
реализация _______________yes
ограничения ______________ o r location ; тут o r - операнды и результат
подробности_реализации __ la la la как-то реализуется

т.е. описание каждой операции включает 4 поля, часть которых можно вообще сделать опциональными (как тег "select" в html)

а на метаассемблере уже реализованы примитивы Форта.

сколько нужно процессорных операций, чтобы реализовать Форт? Если судить по предложению Winglio'на, не так много.

это заменило бы ВМ, которую нужно реализовать на обычном ассемблере.

и это делало бы Форт практически МГНОВЕННО переносимым с процессора на процессор

Это абстрактное рассуждение, но мне интересно - мжно ли? делали?

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 20:54 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Разница между ВМ - в ВМ мы иммитируем регистры и стек, тут пользуемся реальными


меня всегда восхищала простота того, с чего начинается форт

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 21:05 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Такой ассемблер включал бы в себя только:
    1. описание регистров (количество и название)
    2. описание операций с их ограничениями (+ - * / сдвиг сравнение логические )
    3. способы адрессации стека и данных
    4. способы ввода-вывода данных через внешние устройства


Причём везде достаточно 1-5 комманд?
Если даже 10
10 ( команды ) 4 ( их разновидности ) * ( --> 40 ) :)

Имея исходники примитивов форта, метаассеблер перебирая доступные операции, строил бы реализацию Форта

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 21:16 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
или даже 8 каманд, или даже 4 каманды и кампилятор в 240 байт :)
пачимуто сразу подумалось про тему о брэйнфак языках,
на форуме есть :)

_________________
SPF


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 21:18 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
я серьёзно ...

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 21:56 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
вопрос писал(а):
Возможен ли такой мета-ассемблер, на котором можно было бы реализовать любой ассемблер


Чем форт не мета-ассемблер?

вопрос писал(а):
и это делало бы Форт практически МГНОВЕННО переносимым с процессора на процессор


Какие проблемы написать несколько примитивов? Куда проще!?
И их писать не надо можно их скомпилировать на (например) Си.
Листинг будет готовым набором примитивов.

tos+=*psp++; // +
tos*=*psp++; // *

*--psp=tos; // lit
tos=0x123;

{ int tmp; // ?branch
tmp=tos;
tos+=*psp++;
if(tmp) vvv();
}

итд

В общем, при готовом прототипе, в течении часа.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 22:02 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хм... Зачем тогда делается ВМ?

Цитата:
В общем, при готовом прототипе, в течении часа.
Видимо, это будет несколько примитивный форт, хотя, см. выше о том, что меня восхщает.

И для этого ж нужен С, если он есть, можно компилировать гнуфорт под нужный процессор, (если я правильно помню, он на С сделан)

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 22:58 
Не в сети
Аватара пользователя

Зарегистрирован: Ср мар 21, 2007 00:16
Сообщения: 154
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.
Если я правильно понимаю, то кроспроцессорность должен поддерживать язык Си?
Если он это поддерживает, то просто указываем нужный процесор с одними и теми же исходниками для форта.
Если он это НЕ поддерживает, то как мы будем писать на нем кросспроцесорный код?!!!

Или я что-то неправильно понял...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 28, 2007 00:34 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Просто есть компиляторы С для почти любого процессора (значимого), насколько я знаю.

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 28, 2007 00:36 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
вопрос писал(а):
Хм... Зачем тогда делается ВМ?

Для удобства отладки и для упрощения ассемблера виртуального процессора и сведение его к набору примитивов Форта.

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 28, 2007 01:07 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
in4 писал(а):
вопрос писал(а):
Хм... Зачем тогда делается ВМ?

Для удобства отладки и для упрощения ассемблера виртуального процессора и сведение его к набору примитивов Форта.

А я не то же "предлагаю"?
Только "стек и регистры не иммитация, а настоящие"

И переносимость без С для которого компилятор делать долго.

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 28, 2007 03:45 
Не в сети

Зарегистрирован: Чт июн 07, 2007 02:14
Сообщения: 40
Откуда: }{абаровск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
что то я не понял .. по моему глубокому мнению :-) универсального ассемблера быть не может ..
у одного процессора он один .. у другого другой ... а в некоторые просто форт вшит .. :-) . тоже хотите в такие процессора мета ассемблер ?

конечно понимаю задумку - написать форт на этом метаассемблере и типа под любой ЦП иметь готовую реализацию ... но также как нет всеобщего понимания вещей .. не будет и такого асма.

си конечно хорошо .. но как то не очень для такого дела .. особенно когда форт применяет во встраевымых системах с памятью в 8000 слов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 28, 2007 08:53 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
begemot писал(а):
что то я не понял .. по моему глубокому мнению :-) универсального ассемблера быть не может ..
у одного процессора он один .. у другого другой ... а в некоторые просто форт вшит .. :-) . тоже хотите в такие процессора мета ассемблер ?

конечно понимаю задумку - написать форт на этом метаассемблере и типа под любой ЦП иметь готовую реализацию ... но также как нет всеобщего понимания вещей .. не будет и такого асма.

си конечно хорошо .. но как то не очень для такого дела .. особенно когда форт применяет во встраевымых системах с памятью в 8000 слов

Я наоборот против реализации на С, если бы был такой метаассемблер, С (трудоёмкость реализации компилятора нужно обрисовать?) не нужен ...

для тех, в которые форт вшит, обычный их ассемблер уже будет метаассемблером.

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 28, 2007 18:28 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2095
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
Насколько я понял, вопрос предлагает создать минимальный набор виртуальных микрокоманд "Форт-процессора" вместо набора реальных команд процессора, на котором крутится Форт. Затем с помощью этого набора определить (задать) примитивы Форта.
В дальнейшем каждая микрокоманда этого минимальный набора подменяется (определяется) через реальные команды того процессора, на котором будет крутиться Форт. Так как таких микрокоманд очень мало, то определить
их через реальные команды просто.
Все это действительно просто. Но... Это еще одна ступень на пути замедления и без того медленного кода Форта.
Почти аналогичный подход демонстрирует Понятов со своим байт-кодом. Замедлить Форт несложно. Гораздо сложнее его потом ускорить. :o

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 28, 2007 19:10 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
chess писал(а):
Насколько я понял, вопрос предлагает создать минимальный набор виртуальных микрокоманд "Форт-процессора" вместо набора реальных команд процессора, на котором крутится Форт. Затем с помощью этого набора определить (задать) примитивы Форта.
В дальнейшем каждая микрокоманда этого минимальный набора подменяется (определяется) через реальные команды того процессора, на котором будет крутиться Форт. Так как таких микрокоманд очень мало, то определить
их через реальные команды просто.
Все это действительно просто. Но... Это еще одна ступень на пути замедления и без того медленного кода Форта.
Почти аналогичный подход демонстрирует Понятов со своим байт-кодом. Замедлить Форт несложно. Гораздо сложнее его потом ускорить. :o

Почти, с одним НО - я предлагаю ОБОЗНАЧИТЬ через некий всеобщий ассемблер реальные команды реальных процессоров (т.е. нет дополнительной ступени), команды метаассемблера не "реализуются", они И ЕСТЬ команды реального ассемблера, только более абстрактно обозначенные ("указатель на команду вообще" вместо cs-ip) , замедления нет.

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

_________________
понимаю некоторую бестолковость некоторых вопросов


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

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


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

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


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

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