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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 29, 2006 21:57 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Хищник писал(а):
Здесь -> - забрать со стека в первый регистр, --> - во второй, (+) - сложить "арифметические" регистры, <- - отправить регистр на стек. Из таких вещей можно было набрать команды Форта для разных архитектур,

Вот я и присматриваюсь к этому как раз для быстрой портируемости.
А в свете софтпроцессоров это будет самым подходящим решением! ;)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 29, 2006 23:26 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
in4 писал(а):
Вот я и присматриваюсь к этому как раз для быстрой портируемости.
А в свете софтпроцессоров это будет самым подходящим решением! Wink


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


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

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

У обычных процов сложная система команд, а у x86 даже несколько вариантов одной и той же команды.
Интересно упростить набор, но чтобы он оставался функционально полным. 4х битные команды - это намного проще! И транслятор в такой набор команд не так сложно сделать... ;)
С меньшим набором удобнее работать...

Для софтпроцов ты можешь подбирать(выбирать из нескольких прохожих) набор команд, ориентируясь на задачу и он будет оптимальным (для нее!)
Например, все 4 команды какого-нибудь устройства можно закодировать всего 2мя битами. И в один байт насовать их 4 штуки :)
Для обычных процов такой вариант не пройдет - надо или реализовывать ВМ или компилятор в нативный(большого размера) код.

И вот для нескольких похожих можно играться с набором реализованных команд. Код программ не меняется, если в системе команд присутствует только часть команд, а остальные сделаны макросами. Даже не меняется, если сделаны разные наборы команды/макросы. Именно в этом случае и удобны такие виртуальные системы команд!

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 30, 2006 01:03 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
in4 писал(а):
Интересно упростить набор, но чтобы он оставался функционально полным. 4х битные команды - это намного проще! И транслятор в такой набор команд не так сложно сделать... Wink
С меньшим набором удобнее работать...


Ну вот, приехали! А ради чего я все это писал? Речь как раз о том, что транслятор-ассемблер можно сделать на сколько угодно сложную систему команд, если четко придерживаться префиксной формы записи. И в реальных проектах удобно работать как раз с чуть расширенным набором команд, поскольку дополнительные команды могут хорошо ложиться на стиль мышления применительно к конкретной задаче. Вот сейчас поползу добавлять SIMD-расширение к проекту :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 30, 2006 10:37 
Интересно рассмотреть такой подход в рамках создания универсального ассемблера.

А.А. ИВАНОВ. Обобщенное описание семантики в двоично-транслирующей системе с платформы Intel на платформу Эльбрус. - "Высокопроизводительные вычислительные системы и микропроцессоры" - сборник научных трудов ИМВС РАН, 2003 г., стр. 44-54. (http://www.imvs.ru/imvs/collect/2003/44_54.pdf).

P.S. ссылка взята с http://www.mcst.ru/pub.shtml


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 30, 2006 13:20 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Гость писал(а):
Интересно рассмотреть такой подход в рамках создания универсального ассемблера.


Здесь, опять же, возникает следующее соображение. Машинная лингвистика - это все хорошо. Большим, мощным и красивым ассемблером мы закладываем фундамент для эффективного выполнения последующих разработок, в том числе и людьми, которые тонкостями постреония трансляторов не владеют. Им надо выдавать диагностику на уровне "вы пытаетесь сделать mov [mem], [mem], а так нельзя". Рассмотренный же ассемблер выдаст только одну ошибку "не знаю такого слова" :) Но если мы процессоры делаем быстро, то инструментарий написать просто не успеем! Тут уж не до жиру, была бы возможность поковырять свежесозданное ядро.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 30, 2006 13:59 
Хищник писал(а):
Но если мы процессоры делаем быстро, то инструментарий написать просто не успеем! Тут уж не до жиру, была бы возможность поковырять свежесозданное ядро.


Полность согласен,
но выбор как в известном мультике
- "Полдня потерять, а после за пять минут долететь"


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 30, 2006 14:07 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Гость писал(а):
Полность согласен,
но выбор как в известном мультике
- "Полдня потерять, а после за пять минут долететь"


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 30, 2006 16:57 
Не в сети

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

Ага! И я о том же! :)
Причем, похоже, мы подходим к ассемблеру с разных сторон - ты хочешь пополнее покрывать все имеющиеся команды,
а я - иметь этих команд поменьше (меньше примитивов)! :)
Но при этом я и не против обоснованного расширения набора примитивов! ;)

Вот я еще раз перечитал тред - основные идеи у нас оочень похожи. Есть только различие в акцентах и применяемых терминах... ;)
Ты, кстати, тоже предлагаешь ассемблер для ВМ! Пример - STACKххх ;)
И, IMHO, 0 операндный м.б. иногда не очень удобен по синтаксису...

Еще раз подчеркну, что иметь расширяемый язык(форт например) в качестве ассемблера - это удобно. Особенно для софтпроцов!
А спцфисские команды ему можно дописывать хоть при создании, хоть потом.
По сути ты предлагаешь практически новый язык (если судить по именам слов).
Рассмотри использование диалекта Форта в качестве своего ассемблера(или постепенный переход на него)! И учитывай при этом возможности расширения даже набора примитивов...
Вот единственно, что неудобно в этом случае - программистам (привыкшим работать) на асме прийдется учить Форт! ;)
Но доп. обучение все равно нужно - у тебя синтаксис не асмовый, хотя похоже...
Так может... ;)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 30, 2006 17:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
in4 писал(а):
Ага! И я о том же! Smile
Причем, похоже, мы подходим к ассемблеру с разных сторон - ты хочешь пополнее покрывать все имеющиеся команды,
а я - иметь этих команд поменьше (меньше примитивов)! Smile
Но при этом я и не против обоснованного расширения набора примитивов! Wink


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

in4 писал(а):
Ты, кстати, тоже предлагаешь ассемблер для ВМ! Пример - STACKххх Wink
И, IMHO, 0 операндный м.б. иногда не очень удобен по синтаксису...

Ну да, там идет плавное перетекание в примитивы Форта. А уж удобство - второй вопрос. "Кормить в пути никто не обещал" :)
in4 писал(а):
По сути ты предлагаешь практически новый язык (если судить по именам слов).
Рассмотри использование диалекта Форта в качестве своего ассемблера(или постепенный переход на него)! И учитывай при этом возможности расширения даже набора примитивов...

А чего рассматривать-то? :) Уже давно для софт-процев используется грамматика подобного вида. Прямая, как палка - каждая команда имеет код. Список команд - список кодов.
in4 писал(а):
Вот единственно, что неудобно в этом случае - программистам (привыкшим работать) на асме прийдется учить Форт! Wink
Но доп. обучение все равно нужно - у тебя синтаксис не асмовый, хотя похоже...
Так может... Wink

Ну уж.... кому надо, тот научится. Распространять и предлагать у меня намерения нет. Мое дело - показать, что так делать можно, и что именно нужно сделать, чтобы получилось. Это же моя внутренняя кухня (причем в прямом смысле - я тут на кухне вечерами с ноутом отлаживаю прибор с форт-процессором :) Если наработки пригодятся кому-то еще - я опубликовал, на то и конференция. Но я же не должен "плакать, колоться, но продолжать жрать кактус", встраивая в проприетарную разработку какие-то поддержки стандартов, или добиваясь соответствия умозрительно сформированным требованиям?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 01, 2006 08:58 
При проектировании ассемблера можно, как вариант,
сделать небольшой "финт ушами"

Пример:
MOV AX, BX; \ адрес исполнения MOV просто запоминается где-то
\ по ; или следующей мнемонике производится исполнение
\ запомненного MOV для формировния кода операции
\ между MOV и ; используется Форт синтаксис

P.S. При этом МОV не проводит анализа входного потока:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 01, 2006 10:11 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Гость писал(а):
Пример:
MOV AX, BX; \ адрес исполнения MOV просто запоминается где-то
\ по ; или следующей мнемонике производится исполнение
\ запомненного MOV для формировния кода операции
\ между MOV и ; используется Форт синтаксис


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 01, 2006 10:55 
[quote="Хищник] ... Недостаток - требуется изучение системы команд во всех вариантах, чтобы не закрыть себе дорогу к ассемблированию какой-либо комбинации.[/quote]
Да, в этом варианте сами операнды должны принимать решение
применимы ли они к требуемой команде:)


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

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


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

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


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

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