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

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

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


Кажется, было у Черезова. Есть словарь мнемоник и словари операндов. Как только набраны слова из всех трех словарей (двухЮ одного) - происходит генерация команды. Недостаток - требуется изучение системы команд во всех вариантах, чтобы не закрыть себе дорогу к ассемблированию какой-либо комбинации.
Сообщение Добавлено: Пт дек 01, 2006 10:11
  Заголовок сообщения:   Ответить с цитатой
При проектировании ассемблера можно, как вариант,
сделать небольшой "финт ушами"

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

P.S. При этом МОV не проводит анализа входного потока:)
Сообщение Добавлено: Пт дек 01, 2006 08:58
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
Ага! И я о том же! Smile
Причем, похоже, мы подходим к ассемблеру с разных сторон - ты хочешь пополнее покрывать все имеющиеся команды,
а я - иметь этих команд поменьше (меньше примитивов)! Smile
Но при этом я и не против обоснованного расширения набора примитивов! Wink


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

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

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

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

Ну уж.... кому надо, тот научится. Распространять и предлагать у меня намерения нет. Мое дело - показать, что так делать можно, и что именно нужно сделать, чтобы получилось. Это же моя внутренняя кухня (причем в прямом смысле - я тут на кухне вечерами с ноутом отлаживаю прибор с форт-процессором :) Если наработки пригодятся кому-то еще - я опубликовал, на то и конференция. Но я же не должен "плакать, колоться, но продолжать жрать кактус", встраивая в проприетарную разработку какие-то поддержки стандартов, или добиваясь соответствия умозрительно сформированным требованиям?
Сообщение Добавлено: Чт ноя 30, 2006 17:27
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
И в реальных проектах удобно работать как раз с чуть расширенным набором команд, поскольку дополнительные команды могут хорошо ложиться на стиль мышления применительно к конкретной задаче.

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

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

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


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


Полность согласен,
но выбор как в известном мультике
- "Полдня потерять, а после за пять минут долететь"
Сообщение Добавлено: Чт ноя 30, 2006 13:59
  Заголовок сообщения:   Ответить с цитатой
Гость писал(а):
Интересно рассмотреть такой подход в рамках создания универсального ассемблера.


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

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

P.S. ссылка взята с http://www.mcst.ru/pub.shtml
Сообщение Добавлено: Чт ноя 30, 2006 10:37
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
Интересно упростить набор, но чтобы он оставался функционально полным. 4х битные команды - это намного проще! И транслятор в такой набор команд не так сложно сделать... Wink
С меньшим набором удобнее работать...


Ну вот, приехали! А ради чего я все это писал? Речь как раз о том, что транслятор-ассемблер можно сделать на сколько угодно сложную систему команд, если четко придерживаться префиксной формы записи. И в реальных проектах удобно работать как раз с чуть расширенным набором команд, поскольку дополнительные команды могут хорошо ложиться на стиль мышления применительно к конкретной задаче. Вот сейчас поползу добавлять SIMD-расширение к проекту :)
Сообщение Добавлено: Чт ноя 30, 2006 01:03
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
В чем проблема с не-софт процессорами?

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

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

И вот для нескольких похожих можно играться с набором реализованных команд. Код программ не меняется, если в системе команд присутствует только часть команд, а остальные сделаны макросами. Даже не меняется, если сделаны разные наборы команды/макросы. Именно в этом случае и удобны такие виртуальные системы команд!
Сообщение Добавлено: Чт ноя 30, 2006 00:23
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
Вот я и присматриваюсь к этому как раз для быстрой портируемости.
А в свете софтпроцессоров это будет самым подходящим решением! Wink


Я как раз склоняюсь к безоперандному подходу. В чем проблема с не-софт процессорами? Надо выражать то, что хочется, путем комбинирования того, что есть. А есть некие кирпичики. В софт-процессоре кирпичики в основном совпадают с нашими представлениями об их функциональности. Так что можно делать сразу +, а не "забрать, забрать, сложить, вернуть".
Сообщение Добавлено: Ср ноя 29, 2006 23:26
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
Здесь -> - забрать со стека в первый регистр, --> - во второй, (+) - сложить "арифметические" регистры, <- - отправить регистр на стек. Из таких вещей можно было набрать команды Форта для разных архитектур,

Вот я и присматриваюсь к этому как раз для быстрой портируемости.
А в свете софтпроцессоров это будет самым подходящим решением! ;)
Сообщение Добавлено: Ср ноя 29, 2006 21:57
  Заголовок сообщения:   Ответить с цитатой
У меня была поделка на уровне

: + -> --> (+) <- ;

Здесь -> - забрать со стека в первый регистр, --> - во второй, (+) - сложить "арифметические" регистры, <- - отправить регистр на стек. Из таких вещей можно было набрать команды Форта для разных архитектур, но по размышлению стало ясно, что возиться с лишней сущностью себе дороже. Можно и справочник по командам посмотреть, особенно с учетом того, что хорошие вещи с бухты-барахты все равно не получаются. :)
Сообщение Добавлено: Ср ноя 29, 2006 21:44
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
Не, это уже другая тема.
Да. Другое возможное решение, другая методика. Отделение от реального ассеблера вообще! ;)
Хищник писал(а):
Нельзя однозначно решить, что вот, дескать, мы обойдемся виртуальной машиной. Кто-то обойдется, кто-то нет. И вот для тех, кто нет, написана статья.
И для них же можно к ВМ дописывать комады! ;)
Самое серьезное неудобство ВМ-АСМа - трудно быстро добавить непредусмотренную ранее команду - надо в справочник проца смотреть! Но обычно при реализации твоего варианта расписывают все возможные команды...
Так что мое предложение можно рассматривать как врЕменное решение, когда (или пока?) нет твоего... ;)
А твое удобнее и полнее... Если бы у меня оно тогда было... ;)
Сообщение Добавлено: Ср ноя 29, 2006 20:36

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


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