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

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Обзор темы - Форт-ассемблер
Автор Сообщение
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
vpn289 писал(а):
PS: Надо бы куда-то переехать с этой темой.

Это в рабочем порядке, по желанию. Специальных прав пользователя для создания новой темы с технической точки зрения не требуется.
Сообщение Добавлено: Пт мар 31, 2017 12:55
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
vpn289 писал(а):
[Согласен] Кроме чужого мнения. Чаще всего код читают и другие люди.
Обеспечение читабельности - вопрос второй по сравнению с преимуществами, ради которых стоит применять FORTH.
Броуди писал(а):
Во время одного из наших интервью я спросил Мура, использовал ли он какой-нибудь вид диаграмм для планирования концептуальной модели или кодировал прямо на Форте.
Вот его ответ:
"Концептуальной моделью "является" Форт. Я годами учился думать в этом духе".
Может ли кто-нибудь научиться так думать?
"У меня есть нечестное преимущество. Я закодировал свой стиль программирования, и другие люди восприняли его. Я был поражен тем, что это случилось. И я чувствую, что это приятное преимущество, поскольку ведь это мой стиль другие пытаются скопировать. Могут ли они научиться думать так же, как я? Мне кажется, что могут. Это - всего лишь вопрос практики, а у меня практики больше".

vpn289 писал(а):
Да и самому по прошествии времени бывает необходимость заглянуть.
Читать самому "написанное так, как думал" гораздо легче, чем приведенное к какой-либо "нормальной форме".

vpn289 писал(а):
А Вы что, противник читабельного кода?
Нет, просто, профессионал. Читабельность чужого кода определяется совершенно другими параметрами, чем пишут в книжках про "структурное программирование" и "рефактринг". Точнее, всего одним параметром - длиной текста. И чем меньше избыточность текста, тем более он читабелен (просто короче). А, чем больше программист применяет средств "нормализации", тем избыточность выше.

vpn289 писал(а):
Надо бы куда-то переехать с этой темой.
Ко мне на форум. Надо же, хотя бы, проверить, работает ли он...
Сообщение Добавлено: Чт мар 30, 2017 22:24
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
Hishnik писал(а):
Я даже обнаружил залежи своих старых ассемблеров, начиная еще с Z80. Использовать можно и то, и то, в зависимости от того, что конкретно облегчает введение CREATE-слов. В Форте, в принципе, известно, что CREATE является инструментом создания определяющих слов, и для кросс-ассемблирования такие слова как CMD, OPCODE и им подобные - вполне кандидаты на создание и использование. Фанатизм плох в любых проявлениях, а от введения чего-то вроде : OPCODE CREATE , DOES> ... я не вижу ничего по умолчанию плохого.

У меня собственно, по дизайну системы требуются минимальные средства.
Микроядо с минимумом слов ( в нем нет даже арифметики), далее слой ассемблера, слой низкоуровневых слов, слой компилятора и т.д. И так вся система компилируется из собственных исходных кодов во время загрузки.
Тоже, наверное в другую тему.
Сообщение Добавлено: Чт мар 30, 2017 22:03
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
gudleifr писал(а):
Более того, когда Вы пишете на FORTH - Вы пишете так, как Вам удобно. Так, как Вам легче думать и описывать свои мысли. Выигрыш в том и состоит, что Вам не надо оглядываться на нормы, стандарты и, вообще, чужое мнение.

С большинством из этого согласен. Кроме чужого мнения. Чаще всего код читают и другие люди. Да и самому по прошествии времени бывает необходимость заглянуть.
А Вы что, противник читабельного кода?

PS: Надо бы куда-то переехать с этой темой.
Сообщение Добавлено: Чт мар 30, 2017 21:46
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
Я даже обнаружил залежи своих старых ассемблеров, начиная еще с Z80. Использовать можно и то, и то, в зависимости от того, что конкретно облегчает введение CREATE-слов. В Форте, в принципе, известно, что CREATE является инструментом создания определяющих слов, и для кросс-ассемблирования такие слова как CMD, OPCODE и им подобные - вполне кандидаты на создание и использование. Фанатизм плох в любых проявлениях, а от введения чего-то вроде : OPCODE CREATE , DOES> ... я не вижу ничего по умолчанию плохого.
Сообщение Добавлено: Чт мар 30, 2017 16:55
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
vpn289 писал(а):
Какая запись описывает то, что она делает? Не КАК, а именно ЧТО?

Неправильный ответ:
Разумеется, через двоеточие - т.к. она позволяет легкое наращивание этажей, преобразование параметров и привычное комментирование:
Например,

: NEXT, 0FFAD W, 0E0 C, ;
: VARIABLE (CREATE) 053 C, 0BB C, >MARK NEXT, >RESOLVE 0, ;

Правильный ответ:
Зависит от контекста, в котором Вы будете использовать эти слова. Ассемблер (тем более, частный) пишется не ради ассемблера, а ради введения конкретных кодов в конкретное место.
Более того, когда Вы пишете на FORTH - Вы пишете так, как Вам удобно. Так, как Вам легче думать и описывать свои мысли. Выигрыш в том и состоит, что Вам не надо оглядываться на нормы, стандарты и, вообще, чужое мнение.
Сообщение Добавлено: Чт мар 30, 2017 11:05
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
gudleifr писал(а):
vpn289 писал(а):
opcode...
И чем тогда отличается

A B C D ... N opcode Z

от

: Z A C, B C, D C, ... ;

?

Только тем, что "двоеточие" позволяет и с параметрами поиграть?
Тем более, что ENTRY , оно же (CREATE) , оно же _header у Вас уже есть.

Функционально это синонимы. А какой вариант более читабелен?
Какая запись описывает то, что она делает? Не КАК, а именно ЧТО?
Сообщение Добавлено: Чт мар 30, 2017 10:49
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
В общем - мои изыскания в ассемблеростроении.

avr32sysreg - имена регистров, avr32_asm.f - собственно сама реализация (без поддержки 16-битного формата команд - места было не жалко)).

Основные приколы данного ассемблера - приходилось много играться с различными вариантами и форматами команд. В основном - совпадало с результатами работы штатного асм-компилятора данного ядра (но не без косяков))


Вложения:
avr32sysreg.f [4.28 Кб]
Скачиваний: 1216
avr32_asm.f [41.3 Кб]
Скачиваний: 1226
Сообщение Добавлено: Ср мар 29, 2017 19:15
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
vpn289 писал(а):
opcode...
И чем тогда отличается

A B C D ... N opcode Z

от

: Z A C, B C, D C, ... ;

?

Только тем, что "двоеточие" позволяет и с параметрами поиграть?
Тем более, что ENTRY , оно же (CREATE) , оно же _header у Вас уже есть.

vpn289 писал(а):
В "обычном" ассемблере это сделали до Вас. И много раз.
И почему не воспользоваться?

vpn289 писал(а):
Проверять на отсутствие не надо, система ругается если нет такого слова.
Ага. Написать код из 25 команд. Выматериться на первую ошибку. Убедиться, что такое слово есть, просто не так называется. Проверить, на всякий случай, по таблице... И так еще раз 5-10. Не проще сразу таблицу посмотреть?

vpn289 писал(а):
Слово "могу" обозначает возможность, а не обязательность.
А не проще не фантазировать, а писать то, что надо?

vpn289 писал(а):
Зачем новое ядро? В том и прелесть, что можно обходиться минимальным ядром, к которому добавлять нужные слова.
Ага. Уже 50 лет тут собираются люди, которые обсуждают стандарты, пишут каждый, минимум, по паре-другой минимальных, красивых, оптимальных (нужное подчеркнуть) ядер и все никак не напишут... Не пора ли понять, что прелесть минимальности ядра в том и состоит, что его легко переписать?

vpn289 писал(а):
Даже великие и ужасные Мур и Броуди не увидели некоторых очевидных вещей и сделали кое-что важное вразрез с ими же утвержденными принципами.
Опять Вы фантазируете. Большинство "общеизвестных ошибок" Мура и Броуди яйца выеденного не стоят. Скорее, стоит говорить о непонимании этих самых "принципов" большинством современных фортеров.

vpn289 писал(а):
Во-первых, у меня нет инструмента для сбора такой статистики. А во-вторых, просто лень.
Тогда о чем мы говорим? На "нэт" - и проблэмы нэт! Кубический ассемблер в вакууме может быть сколь угодно прекрасен.

KPG & Hishnik писал(а):
...

Что-то сегодня тролли опять распрыгались. Стоит попросить код - и у них начинается истерика.
Сообщение Добавлено: Ср мар 29, 2017 00:21
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
vpn289 писал(а):
Спасибо, учту.

Можно расслабиться и представить, что на пороге замка гостей встречает шут, размахивающий деревянным мечом и утверждающий, что замок его и он самый известный и прославленный рыцарь. При наличии свободного времени шуту можно даже подыграть.
Сообщение Добавлено: Ср мар 29, 2017 00:07
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
gudleifr писал(а):
"Нет, уж лучше - Вы к нам". Что конкретно делает opcode? Может, я чего недопонял?

Код:
db   6,"opcode",0
   alignhe
   dq   nfa_37
   dq   _opcode_code
_opcode_code:
   call   _header
   mov   rax,[here_value]
   mov   qword [rax],op_compile_code
   call _pop
   mov cl,al
       mov rdx,[here_value]
   add rdx,cell_size
   mov [rdx],al
   inc rdx
   and rcx,0ffh
   add qword [here_value],cell_size*2
     
oc1:
   call _pop
   mov [rdx],al
   inc rdx
   loop oc1
   call _align
   ret

   align cell_size

op_compile_code:
   movzx rcx,byte [rax+cell_size]
   inc rax
   mov rdx,[here_value]
   add [here_value],rcx
occ1:
   mov bl,[rax+cell_size]
   mov [rdx],bl
   inc rax
   inc rdx
   dec cl
   jne occ1
   ret
;----------------------------
align cell_size


gudleifr писал(а):
Если это так, то это ошибка. "Задолго до" существуют слово ENTRY (или (CREATE) ) - создание словарной статьи, и "запятая". Все остальные "двоеточия" определяются через них за пару касаний клавиш.

Нет. CREATE это уже сильно позже. Сначала HEADER. Только поля имени и связи.
gudleifr писал(а):
Да, но в "обычном" ассемблере после этого лезть в таблицы не надо. В отличие от Вашего. Сами же написали - приходится проверять, и при необходимости добавлять.

В "обычном" ассемблере это сделали до Вас. И много раз.
Проверять на отсутствие не надо, система ругается если нет такого слова.

vpn289 писал(а):
Числа я пишу один раз, при определении мнемоники, а мнемонику могу использовать потом сотню раз.
gudleifr писал(а):
Сотни? Значит Вы что-то совсем неправильно делаете. При "сотнях" проще отказаться от FORTH и писать на нормальном языке ассемблера..
Вы модальность улавливаете? Слово "могу" обозначает возможность, а не обязательность.

gudleifr писал(а):
Не в смысле "нового набора слов", а в смысле "нового FORTH-ядра".

Зачем новое ядро? В том и прелесть, что можно обходиться минимальным ядром, к которому добавлять нужные слова.

gudleifr писал(а):
Т.е. за предыдущие 50 лет ни одному фортеру это не удалось, и вдруг удастся?
Представьте себе. Даже великие и ужасные Мур и Броуди не увидели некоторых очевидных вещей и сделали кое-что важное вразрез с ими же утвержденными принципами.
gudleifr писал(а):
P.S. И, чтобы не быть голословным, приведите, пожалуйста, статистику, которую я просил, для одной из Ваших программ.

Во-первых, у меня нет инструмента для сбора такой статистики. А во-вторых, просто лень.
Сообщение Добавлено: Вт мар 28, 2017 23:55
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
KPG писал(а):
vpn289 писал(а):
3) Опять 25.

Похоже Вы ещё не в курсе абсурдности самой полемики с Gudliefer/

P.S. У него же однозначно определена позиция в диалоге с собеседником - в виде подписи ко всем сообщениям :)

Спасибо, учту. :)
Сообщение Добавлено: Вт мар 28, 2017 23:29
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
vpn289 писал(а):
И поясните кодом
"Нет, уж лучше - Вы к нам". Что конкретно делает opcode? Может, я чего недопонял?

vpn289 писал(а):
Раскрою еще тему. opcode в моей системе существует ДО двоеточия( его аналога). Задолго до.
Если это так, то это ошибка. "Задолго до" существуют слово ENTRY (или (CREATE) ) - создание словарной статьи, и "запятая". Все остальные "двоеточия" определяются через них за пару касаний клавиш.

vpn289 писал(а):
При написании любого иного ассемблера вам все равно придется лезть в таблицы.
Да, но в "обычном" ассемблере после этого лезть в таблицы не надо. В отличие от Вашего. Сами же написали - приходится проверять, и при необходимости добавлять.

vpn289 писал(а):
Числа я пишу один раз, при определении мнемоники, а мнемонику могу использовать потом сотню раз.
Сотни? Значит Вы что-то совсем неправильно делаете. При "сотнях" проще отказаться от FORTH и писать на нормальном языке ассемблера.

vpn289 писал(а):
Каждая задача требует разработки своего собственного языка. ( В смысле набора слов).
Не в смысле "нового набора слов", а в смысле "нового FORTH-ядра".

vpn289 писал(а):
В процессе разработки можно создать инструмент, который внезапно окажется универсальным.
Т.е. за предыдущие 50 лет ни одному фортеру это не удалось, и вдруг удастся?

P.S. И, чтобы не быть голословным, приведите, пожалуйста, статистику, которую я просил, для одной из Ваших программ.
Сообщение Добавлено: Вт мар 28, 2017 18:44
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
vpn289 писал(а):
3) Опять 25.

Похоже Вы ещё не в курсе абсурдности самой полемики с Gudliefer/

P.S. У него же однозначно определена позиция в диалоге с собеседником - в виде подписи ко всем сообщениям :)
Сообщение Добавлено: Вт мар 28, 2017 18:30
  Заголовок сообщения:  Re: Форт-ассемблер  Ответить с цитатой
gudleifr писал(а):
vpn289 писал(а):
Иными словами слово opcode является создающим для слов-мнемоник. Слово-мнемоника же, в свою очередь компилирует на вершину словаря заданные опкоды.
Т.е. opcode делает тоже самое, что и двоеточие (с запятыми внутри), только через задницу.

Чевой-то? Вообще, так рассуждать - "есть двоеточие, а все остальное через задницу" странно.
Раскрою еще тему. opcode в моей системе существует ДО двоеточия ( его аналога). Задолго до.
И поясните кодом, пожалуйста, что Вы имели ввиду. Не улавливаю.

vpn289 писал(а):
Моя идея в том, что нет нужды пыхтеть и пытаться сделать красивый ассемблер.
О чем и речь. Вам понадобились слова, оставляющие на вершине словаря некоторые "кубики". Т.к. для каждого нового кубика Вы лезете в таблицы, чтобы скомпилировать его вручную, а для каждого нового набора кубиков проверяете список уже введенных, то этот метод не является ассемблером и не является особо удобным. И уж, конечно, любая задача, требующая кодов, потребует и конструкций из наборов кубиков, т.е. вместо вместо ассемблера Вы быстро получите набор макросов, удобный(!) для этой программы, но никак не претендующий на "ассемблерность", тем более, на применимость в других программах.

Т.е., как раз, то, что я имел в виду - вставить в программу коды без ассемблера проще, чем с ним. Попробуйте прикинуть статистику, как я выше.[/quote]
Опять мы не понимаем друг друга.
1) При написании любого иного ассемблера вам все равно придется лезть в таблицы.
2) Какие "кубики"? Мне приятнее не выписывать 0x 48 B, 0x FF B, 0x C0 B, а написать inc_rax.
Числа я пишу один раз, при определении мнемоники, а мнемонику могу использовать потом сотню раз.
И другому человеку гораздо понятнее что обозначет inc_rax супротив 0x 48 B, 0x FF B, 0x C0 B,.
Собственно в этом и основная функция любого ассемблера. Пользоваться не машкодом, а мнемониками.
3) Опять 25. Маленький существенный нюанс Форта. Программа на нем по сути и являет набор макросов, удобный для нее самой. Каждая задача требует разработки своего собственного языка. ( В смысле набора слов). В процессе разработки можно создать инструмент, который внезапно окажется универсальным.
Сообщение Добавлено: Вт мар 28, 2017 18:16

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


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