Easyelectronics.ru

Электроника для всех
Текущее время: 17 дек 2018, 03:23

Часовой пояс: UTC + 5 часов




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 1645 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 66  След.
Автор Сообщение
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 09 фев 2012, 19:58 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
MrYuran писал(а):
Лично мне описание в pdf-ке очень понравилось.
Только запустить не смог, надо найти обновленную версию, под новый (текущий) формат .drt
Они написали свою программу, этим привязали себя к старому выпуску ИС Дракон. У них язык Дракон имеет свою трактовку, изложенную в pdf-ке. Функции их программы решены в ИС Дракон.

Т.е. программа для внутреннего применения, сообщают, что до сих пор используют.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 09 фев 2012, 20:16 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
digitalinvitro писал(а):
dragonedit писал(а):
Цитата:
; Переход по условию ДА
YesGoto=jmpz L<NN/>
; Переход по условию НЕТ
NotGoto=jmpnz L<NN/>

Геннадий Николаевич развейте мои сомнения, переход возможен только одного типа z, nz, к примеру а если по тексту программы потребуется контроль различных флагов с, nc, s, ns, v, nv и так далее. Этого пока не предусмотрено?
Я сам уже давно не пользуюсь ассемблерами, был опыт с 8080, 286, ЕС ЭВМ, PDP-11.

Вы можете выбрать 1 любой флаг и использовать его для организации условных переходов, указав команды в файле описания языка. Установка флага должна производится в ассемблерном коде, помещенном в П текст иконы "Вопрос".

Относительно возможности использования нескольких флагов, можно подумать. Вероятно потребуется несколько наборов команд условных переходов, и программист будет помещать управляющую информацию в комментарии своего программного кода.

По моему мнению лучше ограничиться 1-м флагом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 09 фев 2012, 20:26 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
edm2007 писал(а):
Замечательно, теперь ничего не виснет а выдает ошибку "программа зациклена". :)
Да и сама суть описания нужного языка несомненно очень удобна.
Тут вот только непонятно что должно быть:
Указали на ситуацию зависания программы при трансляции, происходило зацикливание, теперь введена проверка и выдача сообщения.

Так же указали на проблему наличия метки в конце цикла ДЛЯ. В файле описания языка Си предусмотрено наличие с меткой пустого оператора т.е. ";".

Пустой пункт меню это мусор, не доглядел, уберем.


Последний раз редактировалось Геннадий Тышов 09 фев 2012, 21:48, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 09 фев 2012, 20:53 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
Еще надо сказать о последнем выпуске ИС Дракон.

1. Текстовые окна сделаны большого, нерегулируемого размера, частично перекрывают друг друга. Выбирать мышкой или F1, F2, закрываются ESC, открываются и закрываются кликом на строке состояний. В левом окне (листа) отображаются изменяемые тексты листа, текст икон "Адрес" и "Конец" не изменяется. В правом окне (сообщений) выдаются сообщения программы, для выбора из списка листа в проекте или версии листа, из/для текстовых файлов, в меню "Файл" пункты "Новый текст", "Открыть ...", "Сохранить как ...".

2. В теме обсуждалось положение иконы "Конец" в сгенерированном тексте процедуры. ИС Дракон доработана для размещения П текста иконы "Конец" в конце процедуры.

3. При выборе точек сборки текста (4-е квадраты) схемы или иконы "Модуль" генерируется программный код в окне сообщений. Теперь текст так же помещается в системный буфер и может вставлен в текст в других программах - редакторах.

Отладка программы произведена в части языка Си, с другими возможно потребуются доработки. Заранее благодарю за замечания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 09 фев 2012, 22:12 
Только пришел
Аватара пользователя

Зарегистрирован: 15 дек 2011, 22:23
Сообщения: 15
dragonedit писал(а):
Еще надо сказать о последнем выпуске ИС Дракон...


Хоть я совсем недавно начал разбираться с этой средой, но мне этот выпуск очень понравился. И переключаемые окна и икона "Конец" там где нужно, да еще и править язык можно. Спасибо огромное. :)

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 10 фев 2012, 12:20 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
digitalinvitro писал(а):
Геннадий Николаевич развейте мои сомнения, переход возможен только одного типа z, nz, к примеру а если по тексту программы потребуется контроль различных флагов с, nc, s, ns, v, nv и так далее. Этого пока не предусмотрено?
Я сам уже давно не пользуюсь ассемблерами, был опыт с 8080, 286, ЕС ЭВМ, PDP-11.


Ну тогда то Вы меня поймете как человек знававший :) DEC PDP-11 в том что ассемблер с человеческим лицом бывает :) И почему хотелось бы что бы ИС-Дракон могла с ним управляться.

dragonedit писал(а):
Вы можете выбрать 1 любой флаг и использовать его для организации условных переходов, указав команды в файле описания языка. Установка флага должна производится в ассемблерном коде, помещенном в П текст иконы "Вопрос".


Это понятно, но...как быть например с сравнением больше меньше, сравнение со знаком. Z и NZ это всего лишь сравнение на "ноль".

dragonedit писал(а):
Относительно возможности использования нескольких флагов, можно подумать. Вероятно потребуется несколько наборов команд условных переходов, и программист будет помещать управляющую информацию в комментарии своего программного кода.


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 10 фев 2012, 22:17 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
digitalinvitro писал(а):
Может не множить сущности, а сделать проще дать нам в ощущение метку перехода Если Да и Если нет и разрешить ее подстановку в П-код иконы как макроса. Команду сравнения флага написать можно любую.
Прошу подробнее и с примером.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 10 фев 2012, 22:41 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
digitalinvitro писал(а):
Может не множить сущности, а сделать проще дать нам в ощущение метку перехода Если Да и Если нет и разрешить ее подстановку в П-код иконы как макроса. Команду сравнения флага написать можно любую.
Прошу подробнее и с примером.


П-текст иконы будет выглядеть следующим образом:

jnz %jmp_label%
jnc %jmp_label%
jc %jmp_lablel%

и т.д. с любыми флагами, при этом %jmp_label% - это зарзервированное слово вместо которого при трансляции подставится метка генерированная ИС-Дракон для осуществления перехода вправо по Дракон-схеме на лиану ветвления. Можно и вообще не ставить этот токен %jmp_label%, в принципе устроит даже, что в этом случае метка будет подставлена транслятором автоматически к П-тексту иконы. Предположим указываем только команду без метки: jnc,jc,jz,jnz,brne,breq и тому подобное, транслятор добавляет к этой команде метку перехода и всю строку размещает в исходный текст примитива или силуэта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 10 фев 2012, 22:53 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
Как в программном коде будет учитываться состояние иконы "Вопрос" Да-Нет или Нет-Да?

Возможно достаточно одного флага Z, а пограммист предусмотрит макрос установки значения флага Z по значению анализируемого флага.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 11 фев 2012, 04:36 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 09 фев 2011, 23:57
Сообщения: 116
Цитата:
при этом %jmp_label% - это зарзервированное слово вместо которого при трансляции подставится метка генерированная ИС-Дракон для осуществления перехода вправо

Не разумнее ли два макроса меток предусмотреть - yes_label и no_label?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 11 фев 2012, 08:49 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
Как в программном коде будет учитываться состояние иконы "Вопрос" Да-Нет или Нет-Да?


Икона "ветвление" Дракона уводит на правую лиану в том случае, если происходит уход с главного пути алгоритма на второстепенный. Так пишет Паранджанов в руководстве к Дракон. Выбор ответвления, а значит и вопроса Да/нет осуществляется из удобности чтения алгоритма - шампур основная дорога, лиана ответвление. Таким образом нам достаточно одной метки. Инверсия же вопроса подразумевается и сменой мнемоники команды. Т.е. каков бы не был вопрос уводящий на лиану для ассемблера будет комплементарная пара мнемоник ответов. "Меньше"/"Больше и равно", "Не равно/равно", "Отрицательное/положительное".
Однако могут существовать вопросы для некоторых архитектур, например "меньше или равно", которые не реализуемы одной командой, но это уже дело алгоритма, как разбить вопрос на два реализуемых.

dragonedit писал(а):
Возможно достаточно одного флага Z, а пограммист предусмотрит макрос установки значения флага Z по значению анализируемого флага.


Это возможно, однако приведет к неоправданному росту затрат кода и времени исполнения. Например сдвиги могут применятся для сериализации/десериализации данных, и как правило выход регистра на флаг CARRY используется для контроля завершения процесса. Таким образом флаг C использутется довольно часто. Точно так же можно использовать и флаг знака числа, не по прямому назначению. Перевод значения C в значение Z заставит использовать дополнительные команды и даже регистры или память для симуляции C через Z. Микроконтроллеры под час устанавливают серъезные требования к ресурсам, ограничивая и код и время исполнения.


Последний раз редактировалось digitalinvitro 11 фев 2012, 09:06, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 11 фев 2012, 09:02 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
Vga писал(а):
Цитата:
при этом %jmp_label% - это зарзервированное слово вместо которого при трансляции подставится метка генерированная ИС-Дракон для осуществления перехода вправо

Не разумнее ли два макроса меток предусмотреть - yes_label и no_label?


Дракон разумно использует операцию ветвления, это выражается самим видом этой иконы. На ассемблере операторы условного перехода используются именно по такому принципу для увода исполнения на альтернативный маршрут, для этого достаточно одной метки, вне основного маршрута. В случае не осуществления перехода исполнение продолжается далее. Фактически всегда производители (за очень редким исключением) предусматривают взаимодополняющие условные переходы свзанные с прямым и инверсным использованием флага, или сочетания флагов. Поэтому какой бы не был вопрос уводящий с основного маршрута почти всегда можно подобрать единственную команду его реализующую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 11 фев 2012, 20:44 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
Выпуск ИС Дракон от 11.02.2012 здесь
Прошу выдать отзывы, замечания и предложения по программе.

Доработано в части программирования на языке Delphi и на произвольном ASM.

ASM настраивается на условные переходы по всем флагам.

Приложены описания языков Delphi, C, ASM, 1C.

В описании языка ASM должны присутствовать строки:
ASM=Yes - о использования ассемблера
jmpz=jmpnz L<NN/> - пара команд перехода по значению флага Z, для других флагов добавить аналогичные строки.

В П тексте икон "Вопрос", "Вариант", "Заголовок" последней строкой должна быть команда перехода по установленному значения флага, т.е. 1-я команда в строке описания. Команда не сопровождается адресом перехода.

=============

ИС Дракон доработана в части использования произвольных языков программирования.

За ВАМИ, выполнение тестирования, наработка и обмен опытом, задавайте вопросы.

Геннадий Тышов.

===========

О сообщениях ИС Дракон в сгенерированном программном коде смотрите здесь.


Последний раз редактировалось Геннадий Тышов 11 фев 2012, 21:49, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 11 фев 2012, 21:05 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
Доработано в части программирования на языке Delphi и на произвольном ASM.

ASM настраивается на условные переходы по всем флагам.


Замечательно, будем пробовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 12 фев 2012, 16:03 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
Геннадий Николаевич, не могли бы Вы объяснить особенности использования иконы "Вставка". Я полагал прочитав Паранджанова, что это по своей сути макроподстановка фрагмента исходного текста ,выделенного в отдельный примитив или силуэт для последующего использования. Вставка позволяет разгрузить основной алгоритм от подробностей и вынести подробности в другую Дракон-схему. Вы регламенитруетей такое использование иконы Вставка определнным ее видом (Вставка и "|") точно такой же вид должна иметь "имплантируемая" часть алгоритма (силуэт или примитив с "|").

1. Вы ограничиваете область применения одним листом? Не получилось Вставка из другого листа, с ошибкой что схема иконы (далее номер самой иконы Вставка) не найдена.

2. При трансляции часть описываемого раздельно алгоритма и вставляемая в месте иконы Вставка производится переход на это фрагмент оператором goto ну или jmp для ассемблера, соответсвенно возврат из вставляемой части алгоритма производится таким же точно переходом обратно в тело основной схемы откуда и производилась вставка. Вопрос почему, делается именно так? По факту почти все языковые средства обеспечивают возможность макроподстановки, хотя было бы и не верно использовать препроцессор, сама ИС-Дракон замещает его полностью. Плохо то что от этого будет расти код, увеличваясь как минимум на 1 переход, а в худшем случае на 2 перехода. Учитывая что средство удобное и пользоваться им нужно сравнительно часто - получим не оптимальный код для некоторых компиляторов, не умеющих оптимизировать. Для ассемблеров уж точно никто не уберет эти переходы кроме человека. Почему ИС-Дракон просто не производит подстановку фрагментов П-кода "имплантируемых" во вставку?

3. Ограничение в количестве идентичных Вставок - не более одной, почему?

4. В исходном транслированном коде при замене иконы Вставка появляется еще и дополнительная метка
Код:
    ; 34.Вставка / Изменение параметров завершаемой задачи
LV34
jmp LV74

не совсем понятно для каких целей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 12 фев 2012, 16:15 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
digitalinvitro, об использовании "вставки" в ИС Дракон, на ваши вопросы, я отвечу позднее, а сейчас расскажите, как вы нашли работу с ассемблером, насколько наглядно описание, работа с переходами, настройка на флаги. Можете ли выложить пример drt файла с ассемблером и ваш файл описания?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 12 фев 2012, 19:54 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
как вы нашли работу с ассемблером, насколько наглядно описание, работа с переходами, настройка на флаги.


есть определенные вещи, которые хотелось бы изменить - это переходы генерируемые без особой необходимости например при входе в Силуэт в основную ветку алгоритма гненерируется дополнительный jmp

; ИС Дракон. Транслятор маршрута алгоритма.
; C:\develop\Dragon_2012_01_23\msp430_scheduler.drt
; 1. Изменение 12.02.2012 16:56:24
; Схема - Процедура

Код:
SCHEDULER

    ; 2.Заголовок / Планировщик процессов
jmp L16 ; ЛИШНИЙ JMP НА ВХОДЕ В СХЕМУ

    ; ==================== Шампур

    ; 27.Адрес / Ожидание прерываний

    ; ==================== Шампур

    ; 14.Имя ветки / завершение плановой задачи

L11
    ; 11.Действие / Сравним завершаемую задачи с последней в списке
mov.w  #TaskList_END, R9
cmp.w  R5, R9

    ; 21.Вопрос / завершаемая задача последняя в списке? - Нет
jnz  L35


По метке L16 размещена сама основная ветка:

Код:
L16
    ; 16.Действие / MCU выключить прерывания выключить ядро
bis.w   #GIE+CPUOFF,SR

    ; 17.Действие / Сравнить текущее время системы и время плановой задачи
cmp.w   TaskPlaned, QUANTS

    ; 12.Вопрос / Время запуска активной задачи наступило? - Нет
jnc  L16


Как мне кажется нет ни каких причин генерировать лишний jmp, оптимизирующий компилятор бы убрал лишний goto, но компилятор assembler-а вряд этим будет заниматься.

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

Код:
L60
    ; 60.Вопрос / Задача остановлена? - Нет
BIT.W  OFFSET_ATTR(R7), R5
jnz  L52


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

dragonedit писал(а):
Можете ли выложить пример drt файла с ассемблером и ваш файл описания?


да конечно, но хотелось бы сначало отладить задачу, пока только начал перенос в Дракон.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 12 фев 2012, 20:04 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
ИС Дракон развивается эволюционно и при практической необходимости. Использование иконы "Вставка" для выполнения постановки схемы "Вставка" потребовалось у С. Ефанова. Была выполнена реализация удовлетворяющая его.

digitalinvitro здесь пишет:
Цитата:
1. Вы ограничиваете область применения одним листом? Не получилось Вставка из другого листа, с ошибкой что схема иконы (далее номер самой иконы Вставка) не найдена.
Да, только с листа с вызывающей схемы, т.к. метки содержат номера икон, номера на каждом листе присваиваются от 1. Если есть необходимость, схема "Вставка" должна дублироваться на листе.

Цитата:
2. .... Плохо то что от этого будет расти код, увеличваясь как минимум на 1 переход, а в худшем случае на 2 перехода. ... Почему ИС-Дракон просто не производит подстановку фрагментов П-кода "имплантируемых" во вставку?

В ИС Дракон весь код упорядочен по положению шампуров в схеме и переход с шампура на шампур производится командой goto (jmp). Невозможно вставить схемы на место иконы, поэтому схема "Вставка" внутри процедуры всегда находится ниже основной схемы.

Цитата:
3. Ограничение в количестве идентичных Вставок - не более одной, почему?
При вызове из схемы несколько раз одной и той же схемы "Вставка" будет дублирование меток, отсюда ограничение контроль количества вызовов.

digitalinvitro писал(а):
4. В исходном транслированном коде при замене иконы Вставка появляется еще и дополнительная метка
Код:
    ; 34.Вставка / Изменение параметров завершаемой задачи
LV34
jmp LV74
не совсем понятно для каких целей.
И мне не понятно, необходимо так:
Код:
    ; 34.Вставка / Изменение параметров завершаемой задачи
jmp LV74
LV34:
jmp LV74 - переход из иконы "Вставка" на схему "Вставка", LV34: - метка для возврата в икону "Вставка" из схемы "Вставка".
Метка LV34 без ":", формат метки в описании языка должен быть таким "Label=L<NN/>:"


Последний раз редактировалось Геннадий Тышов 12 фев 2012, 21:21, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 12 фев 2012, 21:16 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
digitalinvitro здесь пишет:
Цитата:
есть определенные вещи, которые хотелось бы изменить - это переходы генерируемые без особой необходимости например при входе в Силуэт в основную ветку алгоритма гненерируется дополнительный jmp
В ИС Дракон выполняется частичная минимизации количества переходов, но не создавался оптимизирующий компилятор.
Код:
    ; 2.Заголовок / Планировщик процессов
jmp L16 ; ЛИШНИЙ JMP НА ВХОДЕ В СХЕМУ

    ; ==================== Шампур

    ; 27.Адрес / Ожидание прерываний

    ; ==================== Шампур

    ; 14.Имя ветки / завершение плановой задачи

L11
    ; 11.Действие / Сравним завершаемую задачи с последней в списке
mov.w  #TaskList_END, R9
cmp.w  R5, R9
jmp L16 - не является лишним на входе в схему, т.к. метка L16 находится в середине процедуры, а первой меткой является L11.
Код:
    ; 17.Действие / Сравнить текущее время системы и время плановой задачи
cmp.w   TaskPlaned, QUANTS

    ; 12.Вопрос / Время запуска активной задачи наступило? - Нет
jnc  L16
В П тексте иконы "Вопрос" может быть несколько строк, и команды выборки данных и сравнения можно перенести туда.
Цитата:
Настройка на флаги в принципе не очевидна нужно быть в теме, но это следствие не развитой помощи, а не самой реализации настройки. Принцип настройки переходов выбран исключительно верно и пользоваться переходами удобно.
Подчеркнутое не понял. Описание языка для конкретного микроконтроллера должно содержат все команды перехода по условиям на метки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 12 фев 2012, 23:05 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
digitalinvitro здесь пишет:
Цитата:
есть определенные вещи, которые хотелось бы изменить - это переходы генерируемые без особой необходимости например при входе в Силуэт в основную ветку алгоритма гненерируется дополнительный jmp
В ИС Дракон выполняется частичная минимизации количества переходов, но не создавался оптимизирующий компилятор.
jmp L16 - не является лишним на входе в схему, т.к. метка L16 находится в середине процедуры, а первой меткой является L11.

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

dragonedit писал(а):
Цитата:
Настройка на флаги в принципе не очевидна нужно быть в теме, но это следствие не развитой помощи, а не самой реализации настройки. Принцип настройки переходов выбран исключительно верно и пользоваться переходами удобно.
Подчеркнутое не понял. Описание языка для конкретного микроконтроллера должно содержат все команды перехода по условиям на метки.


Настрока ini файла на флаги не очевидна, потому что нет объяснения тому как понимать скрипт:
Код:
;   АСМ команды перехода по Z или другому флагу
jz=jnz  L<NN/>


А необходимо понять, что вставляемый в П-код оператор условного перехода будет переключаться автоматически при выборе назначение лианы Да/Нет, при этом важно то как будет расположена ветвь алтернативного пути на Да или на Нет. Мне было понятно я был в теме и являлся инициатором этого изменения. Другим наверное будет не совсем очевиден данный факт. Поскольку в помощи он не отражен, то я и пишу что "неочевидность" следствие не развитости помощи (страницы help).


Вложения:
msp430_scheduler(1).png
msp430_scheduler(1).png [ 14.13 Кб | Просмотров: 12640 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 12 фев 2012, 23:26 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
Использование иконы "Вставка" для выполнения постановки схемы "Вставка" потребовалось у С. Ефанова. Была выполнена реализация удовлетворяющая его.


Не затруднит ли Вас пересказать чем было вызвана необходимость данного действия. Если я правильно понял Ефанова, то основной язык описания для него Си. Подобная имплементация кода, для Си сродни макроподстановке скажем через достаточно длинный define. Для C++ эту полезную вещь узаконили и перевели из ведомства препроцессора в ведомство самого компилятора и стали описывать как inline процедуры или функции. Такой прием крайне необходим для тех компиляторов, которые либо слабо оптимизируют, либо необходим ручной контроль за этим действием. Для ассемблера это описывалось бы через макрокоманду и дейстовало бы точно так же как и в Си. И мне не совсем понятны откуда появились ограничния на кол-во использования Вставки, если опустить тот факт что она реализуется у Вас через goto на вставляемый код и goto обратно. В таком виде это не должно использоваться даже в Си, как мне кажется.

dragonedit писал(а):
Да, только с листа с вызывающей схемы, т.к. метки содержат номера икон, номера на каждом листе присваиваются от 1. Если есть необходимость, схема "Вставка" должна дублироваться на листе.


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

dragonedit писал(а):
В ИС Дракон весь код упорядочен по положению шампуров в схеме и переход с шампура на шампур производится командой goto (jmp). Невозможно вставить схемы на место иконы, поэтому схема "Вставка" внутри процедуры всегда находится ниже основной схемы.


Допустим. Тогда у меня к вам взаимовыгодное предложение, генерировать вызов макроса, без подстановки самого его тела. И разрешить оформление обрамления схемы для вставки П-кодом, в этом случае можно будет просто описать такой код как макроподстановку
Код:
MACRO ИмяВставки
//Shema
ENDMACRO

В этом случае Вам не придется заботится не о возврате не о переходе на код вставки по goto, препроцессор сделает вставку сам. И можно будет снять ограничение на кол-во использования вставки.

dragonedit писал(а):
Метка LV34 без ":", формат метки в описании языка должен быть таким "Label=L<NN/>:"


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 13 фев 2012, 04:48 
Старожил

Зарегистрирован: 29 янв 2012, 20:16
Сообщения: 496
digitalinvitro писал(а):
Для msp430 метка может и не иметь описания именем с терминированием двоеточием, формат метки для этого ассемблера подразумевает ее обязательное размещение в первом символе строки в таком случае. Но описание с двоеточием так-же поддерживается.
Наличие ":" желательно, т.к. в ИС Дракон программный код рекомендуется писать с 1-й позиции. Метку надо визуально отличать от команды.

digitalinvitro писал(а):
Допустим. Тогда у меня к вам взаимовыгодное предложение, генерировать вызов макроса, без подстановки самого его тела. И разрешить оформление обрамления схемы для вставки П-кодом, в этом случае можно будет просто описать такой код как макроподстановку
Цитата:
MACRO ИмяВставки
//Shema
ENDMACRO
В этом случае Вам не придется заботится не о возврате не о переходе на код вставки по goto, препроцессор сделает вставку сам. И можно будет снять ограничение на кол-во использования вставки.


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

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

digitalinvitro писал(а):
Этого не требуется для ассемблера поскольку руководство ходом компиляции фактически ручное. Однако по поводу шампура с меткой L16 вы не правы, смотрите прицепленный скриншот.
Не согласен с вами, т.к. смотреть надо не на схему, а на программный код, не понятно и о ручном руководстве ходом компиляции.

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

Не знаю, на все ли вопросы ответил, на старые и новые ответим, пишите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 13 фев 2012, 08:14 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):

digitalinvitro писал(а):
Этого не требуется для ассемблера поскольку руководство ходом компиляции фактически ручное. Однако по поводу шампура с меткой L16 вы не правы, смотрите прицепленный скриншот.
Не согласен с вами, т.к. смотреть надо не на схему, а на программный код, не понятно и о ручном руководстве ходом компиляции.


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

Код:
    ; ИС Дракон. Транслятор маршрута алгоритма.
    ; C:\develop\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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 13 фев 2012, 14:54 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
На вашем схеме иконы "Вставки" решают самостоятельные функциональные цели и лучше их оформить процедурой, при этом макрос не потребуется.


вот посмотрите на данную табличку:

Цитата:
контроллер ПЗУ ОЗУ
MSP430G2101IPW14 1,024 128
MSP430G2121IPW14 1,024 128
MSP430G2131IPW14 1,024 128


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

dragonedit писал(а):
.... не понятно и о ручном руководстве ходом компиляции.


Для снижения затрат по используемым ресурсам (скорость, объем, потребление) на ассемблере всегда проводится оптимизация вручную (оптимизатора то нет), как то - разворачивание тела цикла, сворачивание участков повторяющегося кода в процедуру или функцию, перестановка расположения участков кода (влияет на длину команд переходов, влияет на кол-во переходов).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение ИС ДРАКОН
СообщениеДобавлено: 13 фев 2012, 23:29 
Заглядывает иногда

Зарегистрирован: 25 дек 2011, 20:47
Сообщения: 73
dragonedit писал(а):
в П тексте иконы "Конец" схемы "Вставка" пишите пустой комментарий. Для визуального выделения макросов в идентификаторах иконы и схемы пишите "MACRO". Ссылку на схему "Вставка MACRO" поместите в икону "Модуль", соответственно она может находиться на любом листе. При этом, изменение ИС Дракон не требуется.


Хорошо пусть так, есть там пара подводных камней, но хотелось бы обратить внимание на использование вами jmp или goto для входа в шампуры, когда они просто логически следуют друг за другом. Схема в приложении. Кусок кода ниже:
Код:
;===========================================================================
;  MAIN BEGIN
;===========================================================================
       ORG 0F800H ; RESET VECTOR

    ; 46.Заголовок / Основной модуль
jmp L43

    ; ==================== Шампур

    ; 46.Заголовок / Основной модуль

L43:
    ; 43.Вставка / Инициализация MCU
INIT_HARDWARE

    ; 44.Вставка / Планировщик задач
  SСHEDULER

    ; 47.Конец / Конец
END

;===========================================================================
;   MAIN END
;===========================================================================



Для чего нужен переход в начале шампура?


Вложения:
msp430_scheduler(45).png
msp430_scheduler(45).png [ 2.18 Кб | Просмотров: 12851 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 1645 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 66  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

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