Forth
http://fforum.winglion.ru/

Форт-ассемблер
http://fforum.winglion.ru/viewtopic.php?f=24&t=3118
Страница 3 из 3

Автор:  vpn289 [ Вт мар 28, 2017 23:29 ]
Заголовок сообщения:  Re: Форт-ассемблер

KPG писал(а):
vpn289 писал(а):
3) Опять 25.

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

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

Спасибо, учту. :)

Автор:  vpn289 [ Вт мар 28, 2017 23:55 ]
Заголовок сообщения:  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. И, чтобы не быть голословным, приведите, пожалуйста, статистику, которую я просил, для одной из Ваших программ.

Во-первых, у меня нет инструмента для сбора такой статистики. А во-вторых, просто лень.

Автор:  Hishnik [ Ср мар 29, 2017 00:07 ]
Заголовок сообщения:  Re: Форт-ассемблер

vpn289 писал(а):
Спасибо, учту.

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

Автор:  gudleifr [ Ср мар 29, 2017 00:21 ]
Заголовок сообщения:  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 писал(а):
...

Что-то сегодня тролли опять распрыгались. Стоит попросить код - и у них начинается истерика.

Автор:  diver [ Ср мар 29, 2017 19:15 ]
Заголовок сообщения:  Re: Форт-ассемблер

В общем - мои изыскания в ассемблеростроении.

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

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

Вложения:
avr32sysreg.f [4.28 Кб]
Скачиваний: 1236
avr32_asm.f [41.3 Кб]
Скачиваний: 1247

Автор:  vpn289 [ Чт мар 30, 2017 10:49 ]
Заголовок сообщения:  Re: Форт-ассемблер

gudleifr писал(а):
vpn289 писал(а):
opcode...
И чем тогда отличается

A B C D ... N opcode Z

от

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

?

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

Функционально это синонимы. А какой вариант более читабелен?
Какая запись описывает то, что она делает? Не КАК, а именно ЧТО?

Автор:  gudleifr [ Чт мар 30, 2017 11:05 ]
Заголовок сообщения:  Re: Форт-ассемблер

vpn289 писал(а):
Какая запись описывает то, что она делает? Не КАК, а именно ЧТО?

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

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

Правильный ответ:
Зависит от контекста, в котором Вы будете использовать эти слова. Ассемблер (тем более, частный) пишется не ради ассемблера, а ради введения конкретных кодов в конкретное место.
Более того, когда Вы пишете на FORTH - Вы пишете так, как Вам удобно. Так, как Вам легче думать и описывать свои мысли. Выигрыш в том и состоит, что Вам не надо оглядываться на нормы, стандарты и, вообще, чужое мнение.

Автор:  Hishnik [ Чт мар 30, 2017 16:55 ]
Заголовок сообщения:  Re: Форт-ассемблер

Я даже обнаружил залежи своих старых ассемблеров, начиная еще с Z80. Использовать можно и то, и то, в зависимости от того, что конкретно облегчает введение CREATE-слов. В Форте, в принципе, известно, что CREATE является инструментом создания определяющих слов, и для кросс-ассемблирования такие слова как CMD, OPCODE и им подобные - вполне кандидаты на создание и использование. Фанатизм плох в любых проявлениях, а от введения чего-то вроде : OPCODE CREATE , DOES> ... я не вижу ничего по умолчанию плохого.

Автор:  vpn289 [ Чт мар 30, 2017 21:46 ]
Заголовок сообщения:  Re: Форт-ассемблер

gudleifr писал(а):
Более того, когда Вы пишете на FORTH - Вы пишете так, как Вам удобно. Так, как Вам легче думать и описывать свои мысли. Выигрыш в том и состоит, что Вам не надо оглядываться на нормы, стандарты и, вообще, чужое мнение.

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

PS: Надо бы куда-то переехать с этой темой.

Автор:  vpn289 [ Чт мар 30, 2017 22:03 ]
Заголовок сообщения:  Re: Форт-ассемблер

Hishnik писал(а):
Я даже обнаружил залежи своих старых ассемблеров, начиная еще с Z80. Использовать можно и то, и то, в зависимости от того, что конкретно облегчает введение CREATE-слов. В Форте, в принципе, известно, что CREATE является инструментом создания определяющих слов, и для кросс-ассемблирования такие слова как CMD, OPCODE и им подобные - вполне кандидаты на создание и использование. Фанатизм плох в любых проявлениях, а от введения чего-то вроде : OPCODE CREATE , DOES> ... я не вижу ничего по умолчанию плохого.

У меня собственно, по дизайну системы требуются минимальные средства.
Микроядо с минимумом слов ( в нем нет даже арифметики), далее слой ассемблера, слой низкоуровневых слов, слой компилятора и т.д. И так вся система компилируется из собственных исходных кодов во время загрузки.
Тоже, наверное в другую тему.

Автор:  gudleifr [ Чт мар 30, 2017 22:24 ]
Заголовок сообщения:  Re: Форт-ассемблер

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

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

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

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

Автор:  Hishnik [ Пт мар 31, 2017 12:55 ]
Заголовок сообщения:  Re: Форт-ассемблер

vpn289 писал(а):
PS: Надо бы куда-то переехать с этой темой.

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

Страница 3 из 3 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/