1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492

Обсуждение ИС Дракон

28.01.2012, 19:20. Показов 1164412. Ответов 1644
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Учитывая интерес (как собственный, так и сообщества) к данному средству, решил вынести в отдельную тему, т.к. вобсуждении статьи очень тяжело ориентироваться.
Цель - не только обсудить, но и в меру возможностей посодействовать развитию данного проекта.
Задачи:
1. Создание актуальной и удобной справочной системы
2. Совершенствование кодогенератора, поддержка новых языков
3. Что-нибудь ещё придумаем по ходу :)
______________________________

Мои предложения по п.1:
Организовать открытый проект на вики-системе, чтобы каждый мог легко внести свой посильный вклад в свободное время.
Например, на викиучебниках (если там модеры не такие отмтроженные, как на педивикии)

По п.2 пусть предлагают те, кому актуально *(ассемблисты, например).
От себя бы предложил автору представить полную спецификацию формата хранения дракон-схем .drt, чтобы люди могли подключать к редактору собственные примочки (не только кодогенераторы, а и преобразователи, например, в .pdf, .doc итдитп.)

В общем, как-то так.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.01.2012, 19:20
Ответы с готовыми решениями:

Дракон на Андроиде
Автор Никалий Ивиницкий 27 сентября 2015 г. 21:27:00 http://analyticls.ru/---8 И индроид тоже! ...

Дракон хартера-хейтуэя
Здравствуйте! Кто то умеет переводить программы с Делфи на С++, у меня что то плохо получается! Кода очень мало, но некоторые моменты мне...

Тест: Какой вы дракон)))
http://aeterna.ru/test.php?link=tests:365 Вы спокойны, сдержанны и весьма неразговорчивы. Вы склонны отдаляться от этого мира, лежать в...

1644
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
11.02.2012, 23:39
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от dragonedit
Использование иконы "Вставка" для выполнения постановки схемы "Вставка" потребовалось у С. Ефанова. Была выполнена реализация удовлетворяющая его.
Не затруднит ли Вас пересказать чем было вызвана необходимость данного действия. Если я правильно понял Ефанова, то основной язык описания для него Си. Подобная имплементация кода, для Си сродни макроподстановке скажем через достаточно длинный defymi. Для C++ эту полезную вещь узаконили и перевели из ведомства препроцессора в ведомство самого компилятора и стали описывать как inline процедуры или функции. Такой прием крайне необходим для тех компиляторов, которые либо слабо оптимизируют, либо необходим ручной контроль за этим действием. Для ассемблера это описывалось бы через макрокоманду и дейстовало бы точно так же как и в Си. И мне не совсем понятны откуда появились ограничния на кол-во использования Вставки, если опустить тот факт что она реализуется у Вас через goto на вставляемый код и goto обратно. В таком виде это не должно использоваться даже в Си, как мне кажется.

Цитата Сообщение от dragonedit
Да, только с листа с вызывающей схемы, т.к. метки содержат номера икон, номера на каждом листе присваиваются от 1. Если есть необходимость, схема "Вставка" должна дублироваться на листе.
Но ведь это же очень красивый, правильный и крайне необходимый инструмент, такое ограничение в использовании превратит работу проектировщика в копировщика фрагментов алгоритмов на разных листах. Очень странно, что этот инструмент так незаслужено обижен реализацией. Ведь кроме всего прочего это гиперссылка на вставляемы код, нажав которую мы попадем непосредственно в нужный алгоритм без дополнительных действий и навигации по листам. Кстати переход на вставляемую во вставку схему при размещении ее на другом листе - работает!

Цитата Сообщение от dragonedit
В ИС Дракон весь код упорядочен по положению шампуров в схеме и переход с шампура на шампур производится командой goto (jmp). Невозможно вставить схемы на место иконы, поэтому схема "Вставка" внутри процедуры всегда находится ниже основной схемы.
Допустим. Тогда у меня к вам взаимовыгодное предложение, генерировать вызов макроса, без подстановки самого его тела. И разрешить оформление обрамления схемы для вставки П-кодом, в этом случае можно будет просто описать такой код как макроподстановку
Code
1
2
3
MACRO ИмяВставки
//Shima
ENDMACRO
В этом случае Вам не придется заботится не о возврате не о переходе на код вставки по goto, препроцессор сделает вставку сам. И можно будет снять ограничение на кол-во использования вставки.

Цитата Сообщение от dragonedit
Метка LV34 без ":", формат метки в описании языка должен быть таким "Label=L<NN/>:"
Для msp430 метка может и не иметь описания именем с терминированием двоеточием, формат метки для этого ассемблера подразумевает ее обязательное размещение в первом символе строки в таком случае. Но описание с двоеточием так-же поддерживается.
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
12.02.2012, 05:01
Цитата Сообщение от dykytotymvytro
Для msp430 метка может и не иметь описания именем с терминированием двоеточием, формат метки для этого ассемблера подразумевает ее обязательное размещение в первом символе строки в таком случае. Но описание с двоеточием так-же поддерживается.
Наличие ":" желательно, т.к. в ИС Дракон программный код рекомендуется писать с 1-й позиции. Метку надо визуально отличать от команды.

[QUOTE="dykytotymvytro"]Допустим. Тогда у меня к вам взаимовыгодное предложение, генерировать вызов макроса, без подстановки самого его тела. И разрешить оформление обрамления схемы для вставки П-кодом, в этом случае можно будет просто описать такой код как макроподстановку
Цитата Сообщение от Цитата:[/QUOTE]
MACRO ИмяВставки
//Shima
ENDMACRO
В этом случае Вам не придется заботится не о возврате не о переходе на код вставки по goto, препроцессор сделает вставку сам. И можно будет снять ограничение на кол-во использования вставки.

Предлагаю, икону и схему "вставка" не помечать "|", в иконе вы вызываете макрос, в П тексте схемы пишите
MACRO ИмяВставки
//Shima
ENDMACRO
, в П тексте иконы "Конец" схемы "Вставка" пишите пустой комментарий. Для визуального выделения макросов в идентификаторах иконы и схемы пишите "MACRO". Ссылку на схему "Вставка MACRO" поместите в икону "Модуль", соответственно она может находиться на любом листе. При этом, изменение ИС Дракон не требуется.

На вашем схеме иконы "Вставки" решают самостоятельные функциональные цели и лучше их оформить процедурой, при этом макрос не потребуется.

[QUOTE="dykytotymvytro
Этого не требуется для ассемблера поскольку руководство ходом компиляции фактически ручное. Однако по поводу шампура с меткой L16 вы не правы, смотрите прицепленный скриншот.
Не согласен с вами, т.к. смотреть надо не на схему, а на программный код, не понятно и о ручном руководстве ходом компиляции.

О практике применения С. Ефановым вставки, лучше обратится к нему.

Не знаю, на все ли вопросы ответил, на старые и новые ответим, пишите.
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
12.02.2012, 08:27
Цитата Сообщение от dragonedit
Цитата Сообщение от dykytotymvytro
Этого не требуется для ассемблера поскольку руководство ходом компиляции фактически ручное. Однако по поводу шампура с меткой L16 вы не правы, смотрите прицепленный скриншот.
Не согласен с вами, т.к. смотреть надо не на схему, а на программный код, не понятно и о ручном руководстве ходом компиляции.

Я приводил транслированный код схемы, вот смотрите начало схемы:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    ; ИС Дракон. Транслятор маршрута алгоритма.
; C:\divelop\Dragon_2012_01_23\msp430_scheduler.drt
; 1. Изменение 13.02.2012 0:48:24
; Схема - Процедура
 
SCHEDULER
 
; 2.Заголовок / Планировщик задач
jmp L16
 
; ==================== Шампур
 
; 27.Адрес / Ожидание прерываний
 
; ==================== Шампур
 
; 14.Имя ветки / возврат из плановой задачи
; -9.Правый комментарий / При возврате R6 - dT время до старта
 
L64
; 64.Полка / ПОСЛЕДНЯЯ задача в списке / R9
mov.w  #TaskList_END, R9
 
; 21.Вопрос / ПЛАНОВАЯ задача ПОСЛЕДНЯЯ? - Да
cmp.w  R5, R9
jz  L36
 
; 34.Вставка / Изменение параметров завершаемой задачи
LV34
jmp LV74
 
; 15.Адрес / планирование новой задачи
jmp L36
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
12.02.2012, 15:07
Цитата Сообщение от dragonedit
На вашем схеме иконы "Вставки" решают самостоятельные функциональные цели и лучше их оформить процедурой, при этом макрос не потребуется.
вот посмотрите на данную табличку:

контроллер ПЗУ ОЗУ
MSP430G2101IPW14 1,024 128
MSP430G2121IPW14 1,024 128
MSP430G2131IPW14 1,024 128
При таких объемах ЗУ расточительно делать вызов одного единственного фрагмента кода, вызов откусит и стековое пространство и пространство кода на сам вызов и на возврат. Самостоятельной ценности этот фрагмент кода не имеет, а вот его сокращенное размещение в описании Дракон-схемой выглядит очень удобно, дает возможность охватить всю схему целиком и опустится на необходимый уровень подробности, в несколько действий мышкой. Эта возможность бесценна.

Цитата Сообщение от dragonedit
.... не понятно и о ручном руководстве ходом компиляции.
Для снижения затрат по используемым ресурсам (скорость, объем, потребление) на ассемблере всегда проводится оптимизация вручную (оптимизатора то нет), как то - разворачивание тела цикла, сворачивание участков повторяющегося кода в процедуру или функцию, перестановка расположения участков кода (влияет на длину команд переходов, влияет на кол-во переходов).
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
12.02.2012, 23:42
Цитата Сообщение от dragonedit
в П тексте иконы "Конец" схемы "Вставка" пишите пустой комментарий. Для визуального выделения макросов в идентификаторах иконы и схемы пишите "MACRO". Ссылку на схему "Вставка MACRO" поместите в икону "Модуль", соответственно она может находиться на любом листе. При этом, изменение ИС Дракон не требуется.
Хорошо пусть так, есть там пара подводных камней, но хотелось бы обратить внимание на использование вами jmp или goto для входа в шампуры, когда они просто логически следуют друг за другом. Схема в приложении. Кусок кода ниже:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
;===========================================================================
;  MAIN BEGIN
;===========================================================================
ORG 0F800H ; RESIT VECTOR
 
; 46.Заголовок / Основной модуль
jmp L43
 
; ==================== Шампур
 
; 46.Заголовок / Основной модуль
 
L43:
; 43.Вставка / Инициализация MCU
INIT_HARDWARE
 
; 44.Вставка / Планировщик задач
SСHEDULER
 
; 47.Конец / Конец
END
 
;===========================================================================
;   MAIN END
;===========================================================================
Для чего нужен переход в начале шампура?


http://**************************/download/file.php?id=8839&sid=23c55c7b09e2110b187 58af163b13fa1
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
13.02.2012, 02:51
Цитата Сообщение от dykytotymvytro
Для чего нужен переход в начале шампура?
Выполнена доработка ИС Дракон, переход устранен.
Выпуск от 13.02.2012 здесь
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
13.02.2012, 10:55
Цитата Сообщение от dragonedit
Выполнена доработка ИС Дракон, переход устранен.
Выпуск от 13.02.2012 здесь
Отлично Геннадий Никалиевич, огромное спасибо, что прислушиваетесь и делаете продукт удобней. Очень приятно, что Вы погружаетесь в тему, так сказать "с головой". Осмелюсь еще раз "напрячь" Вас оставшимися проблемами переходов из шампура в шампур, когда между этими шампурами не содержится никакого кода, все равно происходит генерация дополнительного jmp. Дракон-схему процесса и куски кода иллюстрирующие данный факт прилагаю. jmp L64 и jmp L36 это как раз те переходы которых хотелось бы избегать.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
; 5.Адрес / возврат из плановой задачи
jmp L64
 
; ==================== Шампур
 
; 27.Адрес / Ожидание прерываний
 
; ==================== Шампур
 
; 14.Имя ветки / возврат из плановой задачи
; -9.Правый комментарий / При возврате R6 - dT время до старта
 
L64:
; 64.Полка / ПОСЛЕДНЯЯ задача в списке / R9
mov.w  #TaskList_END, R9
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    ; 15.Адрес / планирование новой задачи
jmp L36
 
; ==================== Шампур
 
; 24.Комментарий / ПОСЛЕДНЯЯ системная задача TaskUnfreeze, ее параметры не должны меняться: время старта постоянно FFFF
 
; 104.Адрес / планирование новой задачи
 
; ==================== Шампур
 
; 30.Имя ветки / планирование новой задачи
 
L36:
; 36.Вставка / Выбор ПЛАНОВОЙ задачи
AssyknPlanedTask
 
; 31.Адрес / Ожидание прерываний
jmp L16
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
13.02.2012, 23:28
Цитата Сообщение от dykytotymvytro
Отлично Геннадий Никалиевич, огромное спасибо, что прислушиваетесь и делаете продукт удобней.
Спасибо и вам за сотрудничество.

Выпуск ИС Дракон от 14.02.2012. здесь
Прошу выдать отзывы, замечания и предложения по программе.

Устранена ошибка размещения метки возврата из схемы-вставки, о ней говорилось

Вы пишите о "проблеме переходов из шампура в шампур" без jmp. Это можно сделать, но требуются значительные усилия и время, и возможно совместно с другими изменениями.
0
ifomov
15.02.2012, 11:53
Цитата Сообщение от dragonedit
Выполнена доработка ИС Дракон, переход устранен.
Геннадий Никалиевич, эта доработка создала небольшую проблемку для языка программирования С. Удалив goto на первую метку, Вы оставили саму метку. Это вызывает волнение (Warning) компилятора - что вот мол, метка есть, а перехода на неё - нету. Удалив переход, нужно удалить и саму метку.

PS: Возможно, кто то мне сейчас посоветует, что "варнинги это нестрашно, их даже можно отключить". Да, можно отключить. Это дело вкуса. Но у меня варнинги приравнены к ошибкам. Есть такая опция у компилятора. Это тоже - дело вкуса. А о вкусах - не спорят :)
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
15.02.2012, 14:25
Цитата Сообщение от ifomov
Это тоже - дело вкуса. А о вкусах - не спорят :)
Несколько постов назад Геннадий Никалиевич отослал с вопросами относительно вставки к Вам.
О практике применения С. Ефановым вставки, лучше обратится к нему.
Не могли бы дать пояснения как и зачем Вы их используете?
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
15.02.2012, 20:02
Цитата Сообщение от ifomov
Но у меня варнинги приравнены к ошибкам.
Спасибо за замечания, займемся и этой проблемой.
0
ifomov
15.02.2012, 21:20
О практике применения С. Ефановым вставки, лучше обратится к нему.
Не могли бы дать пояснения как и зачем Вы их используете? Уже здесь обсуждали, и нового я ничего не скажу:
- Это делалось для того, что бы разбить большую Дракон-схему на несколько маленьких, и при этом избежать вызовов функций.
Только в моём случае причина, по которой нельзя вызывать функцию, была другая.
Этого не позволяла сделать примитивная RTOS, использованная в проекте.
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
16.02.2012, 10:18
Цитата Сообщение от ifomov
- Это делалось для того, что бы разбить большую Дракон-схему на несколько маленьких, и при этом избежать вызовов функций.
Ё-моё! А я и не знал... Я вызов функции пишу, а он мне, значит, ещё и goto туда пропишет, к объявлению функции.
И выйдет винегрет.
0
ifomov
16.02.2012, 12:58
Цитата Сообщение от MrYurom
Я вызов функции пишу, а он мне, значит, ещё и goto туда пропишет, к объявлению функции.
Нет, конечно. Речь шла о случаях, когда вызов функции делать не хочется, а большую схему разделить части - хочется. И в ход шёл хитрый трюк - в отдельную Дракон схему писалась часть функции, а управление в эту часть передавалось с помощью goto.
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
16.02.2012, 14:13
Цитата Сообщение от ifomov
Нет, конечно. Речь шла о случаях, когда вызов функции делать не хочется, а большую схему разделить части - хочется. И в ход шёл хитрый трюк - в отдельную Дракон схему писалась часть функции, а управление в эту часть передавалось с помощью goto.
Это я [теперь] понял, а раньше думал по-другому, что схема инкапсулируется, а вот вызовы - нет.
То есть я писал в коде вставки вызов функции, а во вложенной схеме эту функцию расписывал. Теперь понимаю, что был неправ.
И компилятор мне бы это объяснил (когда бы до него дело дошло).

В общем, для меня в таком виде неприемлемо.
Буду колупать кодогенератор земляка Петра Приклонского. Идеологически ближе.
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
17.02.2012, 11:10
Геннадий Никалиевич, в данный момент есть ли возможность генерации смешанного кода Си+asm ИС-Дракон. Например, без открытия двух разных сред одновременно, скажем через настройку иконы "Модуль"?
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
17.02.2012, 11:14
Цитата Сообщение от MrYurom
Это я [теперь] понял, а раньше думал по-другому, что схема инкапсулируется, а вот вызовы - нет.
То есть я писал в коде вставки вызов функции, а во вложенной схеме эту функцию расписывал. Теперь понимаю, что был неправ.
И компилятор мне бы это объяснил (когда бы до него дело дошло).
У иконы "Вставка" несколько возможных видов, только вид "|" отождествляется с переходом на вставляемый кусок кода, остальные не инкапсулируют каких либо операций без ведома пользователя. Меня так же не устроил этот момент но Геннадий Никалиевич предложил работать по схеме макроподстановки, через описания Вставки как обычной иконы, а вставляемой части схемы как MACRO...ENDM по обычной схеме.
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
19.02.2012, 18:48
Вот идеальный (по сути) способ взаимодействия дракон-редактора с кодом:
http://www.rapidquotytysystems... itDesykner
Если бы нечто подобное удалось реализовать для дракона...
Я был бы вполне счастлив!
Задумка у авторов отличная, но вот вид схем... Насколько красивее смотрелись бы аккуратные кирпичики "ИС-Дракона"...
Не то чтобы жалко 150 стерлингов фунтов, но в таком виде тоже не катит.
Но главное - связь схемы и текста.
Просто, как 5 рублей.

Комментарий - текст иконы, код - собственно код.
Плюс, режим псевдокода.

Можно чуть усложнить, по типу тегов doxygen, чтобы точно определить нужную икону и входящий в неё код.

Кстати, в драконовской классификации не хватает модного нынче цикла foreach()
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
19.02.2012, 20:05
Цитата Сообщение от MrYurom
Кстати, в драконовской классификации не хватает модного нынче цикла foreach()
Есть блок "Цикл ДЛЯ", в иконе "Цикл ДЛЯ начало" пишите "Для каждого ...".
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
19.02.2012, 21:13
ИС Дракон доработан по замечаниям dykytotymvytro и С. Ефанова к генерации программного кода.

Выпуск от 20.02.2012 выложен здесь, там же смотрите пояснения.

Жду Ваши отзывы, замечания и предложения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2012, 21:13

Дракон, UML, LabVIEW
Можно из Дракона прямо на Обероне без программирования модуль создавать http://sage.com.ua/ru.shtml?e6l0 Наверное можно и для других...

Ищу кисть - дракон
ищю такого дракона:

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

ИС Дракон. Вопрос - ответ.
В теме &quot;Обсуждаем ИС Дракон&quot; идут бурные обсуждения. Вопросы теряются. Здесь задаем вопрос только по ИС Дракон. Сколько вопросов...

Фрактал Дракон Харьков-Хайтвея
Необходимо построить фрактал по заданным правилам: axiom = FX Правила F=F, X=X+YF+, Y=-FX-YF Угол pi/2 Находил только код, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
140
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru