Форум программистов, компьютерный форум, киберфорум
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/6334: Рейтинг темы: голосов - 6334, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492

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

28.01.2012, 19:20. Показов 1162955. Ответов 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 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru