Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.05.2013, 16:04   #1
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Распределение памяти в контроллере

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

Название:  1.png
Просмотров: 128
Размер:  10.2 Кбайт   Нажмите на картинку для увеличения

Название:  2.png
Просмотров: 213
Размер:  7.9 Кбайт  
tvf вне форума   Ответить с цитированием
Старый 06.05.2013, 17:39   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Рано или поздно при разработке сложных проектов сталкиваешься с нехваткой памяти в контроллерах. На данный момент лоджик просто информирует о нехватке памяти, а хотелось бы знать какой памяти не хватает и сколько не хватает. В свойствах контроллера можно посмотреть имеющуюся в наличии память, в логах можно посмотреть запрашиваемые ресурсы контроллера, но не понятно куда что грузится. Можно это разжевать чуть поподробней. Лучше на примере из вложения.
Программа во FLASH, блоки памяти в EEPROM. ОЗУ используется в процессе работы контроллера, в табличке лишь справочная информация.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 07:03   #3
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Arsie, я же просил рассказать поподробней, а вы пытаетесь отделаться общими словами. Тогда постараюсь сформулировать вопросы почетче:
1. Верно ли что все составляющие программы, отмеченные в файле логов грузятся во FLASH (за исключением строчки EEPROM)?
2. Верно ли что размеры памяти, указанные в свойствах контроллера доступны именно для пользовательской программы?
3. Верно ли что размеры памяти, указанные в свойствах контроллера не являются константой для определенного типа контроллера, а зависят скажем от размера ядра, загруженного в контроллер?
4. Как определить в какой именно области памяти произошла перегрузка? Вопрос касается прежде всего FLASH и ОЗУ. С EEPROM более менее ясно.
5. Будет ли сделана в лоджике расшифровка, какая область памяти переполнена? Для EEPROM это вроде сделано. Осталось сделать для FLASH и ОЗУ. Хотя бы через файл логов.
6. Каковы общие рекомендации по оптимизации кода программы при переполнении FLASH и ОЗУ? Понятно, что уменьшение самой программы. Но разные блоки повидимому по разному используют FLASH и ОЗУ.
7. Можна на примере из прикрепленных выше файлов показать какая область памяти переполнена и на сколько?
tvf вне форума   Ответить с цитированием
Старый 07.05.2013, 11:59   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Arsie, я же просил рассказать поподробней, а вы пытаетесь отделаться общими словами. Тогда постараюсь сформулировать вопросы почетче:
Сложно рассказать подробности, когда они отсутствуют. Но я попробую.


Цитата
Сообщение от tvf Посмотреть сообщение
1. Верно ли что все составляющие программы, отмеченные в файле логов грузятся во FLASH (за исключением строчки EEPROM)?
"Программа грузится во FLASH, блоки памяти в EEPROM".

Т.е. всё, что грузится не в EEPROM, грузится во FLASH.

Т.е. всё, что не грузится во FLASH, грузится в EEPROM.

Т.к. всё грузится во FLASH и EEPROM, в ОЗУ грузится ничего. Ничего занимает 0 байт, поэтому оно в ОЗУ не грузится.



Цитата
Сообщение от tvf Посмотреть сообщение
2. Верно ли что размеры памяти, указанные в свойствах контроллера доступны именно для пользовательской программы?
Да, действительно, доступная память доступна для использования.

Использовать иным способом, кроме как загрузить программу, невозможно. Таким образом, доступная память доступна для загрузки программы.



Цитата
Сообщение от tvf Посмотреть сообщение
3. Верно ли что размеры памяти, указанные в свойствах контроллера не являются константой для определенного типа контроллера, а зависят скажем от размера ядра, загруженного в контроллер?
Разумеется. Более бОльшее по размеру ядро занимает бОльшее количество памяти. И наоборот: мЕньшее по размеру ядро занимает мЕньшее количество памяти.

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



Цитата
Сообщение от tvf Посмотреть сообщение
4. Как определить в какой именно области памяти произошла перегрузка? Вопрос касается прежде всего FLASH и ОЗУ. С EEPROM более менее ясно.
Никак. Выделение памяти динамическое, контроллер просто ответил, что для очередное выделение памяти прошло неудачно.



Цитата
Сообщение от tvf Посмотреть сообщение
5. Будет ли сделана в лоджике расшифровка, какая область памяти переполнена? Для EEPROM это вроде сделано. Осталось сделать для FLASH и ОЗУ. Хотя бы через файл логов.
См. выше.



Цитата
Сообщение от tvf Посмотреть сообщение
6. Каковы общие рекомендации по оптимизации кода программы при переполнении FLASH и ОЗУ? Понятно, что уменьшение самой программы. Но разные блоки повидимому по разному используют FLASH и ОЗУ.
В разделе про лоджик эта тема закреплена в самом верху.



Цитата
Сообщение от tvf Посмотреть сообщение
7. Можна на примере из прикрепленных выше файлов показать какая область памяти переполнена и на сколько?
Этот вопрос полностью повторяет вопрос номер 4.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 08.05.2013 в 16:14
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 12:48   #5
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Т.к. всё грузится во FLASH и EEPROM, в ОЗУ грузится ничего. Ничего занимает 0 байт, поэтому оно в ОЗУ не грузится.
Тогда на примере вложений приведенных выше имеем:
Весь запрашиваемый объем памяти (за исключением EEPROM) составляет 91794 байта. Доступно 88320 байта. Разница 3474 байта. Это и есть перевышение размера FLASH?
Цитата Никак. Выделение памяти динамическое, контроллер просто ответил, что для очередное выделение памяти прошло неудачно.
Можно ли это понимать, что лоджик даже после компиляции не знает сколько FLASH и ОЗУ потребуется для работы программы? А потребное количество FLASH и ОЗУ определяет сам контроллер, причем еще до загрузки самой программы, ориентируясь только на запрошенные ресурсы контроллера?
tvf вне форума   Ответить с цитированием
Старый 07.05.2013, 13:00   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Тогда на примере вложений приведенных выше имеем:
Весь запрашиваемый объем памяти (за исключением EEPROM) составляет 91794 байта. Доступно 88320 байта. Разница 3474 байта. Это и есть перевышение размера FLASH?
Да, но косвенно.


Цитата
Сообщение от tvf Посмотреть сообщение
Можно ли это понимать, что лоджик даже после компиляции не знает сколько FLASH и ОЗУ потребуется для работы программы? А потребное количество FLASH и ОЗУ определяет сам контроллер, причем еще до загрузки самой программы, ориентируясь только на запрошенные ресурсы контроллера?
Именно так. Но не до, а во время.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 07.05.2013 в 15:43
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 13:40   #7
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Да, но косвенно.
А хотелось бы явно и прямо.
Цитата Именно так. Но не до, а вовремя.
К слову говоря сообщение об ошибке появляется до появления сообщения о загрузке на экране контроллера, хотя это мало о чем говорит. Если контроллер настолько умный, чтоможет сам определить перегрузку памяти, так добавте в него функцию что бы сообщал лоджику какая именно область памяти перегружена. Ну или добавте эту функцию в лоджик.
tvf вне форума   Ответить с цитированием
Старый 07.05.2013, 13:50   #8
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

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


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 14:21   #9
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Если нет четкого понимания на что расходуются ресурсы FLASH и ОЗУ, то корректно отрисовать сценарий вряд ли получится. Но попробую.
Заметил следующую вещь, если ставишь блок на поляну и не соединяешь его входы/выходы с другими блоками, то размер FLASH памяти увеличивается строго на количество выходов с учетом типа входов/выходов (bool, int и тд). Но если входы/выходы соеденены с другими блоками, то увеличение происходит, но уже меньшее, видимо часть идет на увеличение ОЗУ. Косвенно это говорит о том, что лоджик все таки может просчитать при компиляции потребное количество FLASH и ОЗУ. Любой алгоритм содержит определенное количество констант и переменных. Переменную нельзя оформить как константу, а вот константу можно оформить как переменную. Если есть перегрузка FLASH, но есть место в ОЗУ, то как вариант переводить константы в переменные для снижения нагрузки на FLASH. А таких констант в алгоритме хватает, как правило это числа из ряда: -1, 2 и тд.
К слову говоря в лоджике не хватает такой арифметической операции как смена знака числа. Вроде всего один бит в числе надо поменять, а приходится применять умножение на -1.
tvf вне форума   Ответить с цитированием
Старый 07.05.2013, 14:37   #10
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Если нет четкого понимания на что расходуются ресурсы FLASH и ОЗУ, то корректно отрисовать сценарий вряд ли получится.
Именно поэтому данная функция и отсутствует в лоджике. Эффект от её наличия в лучшем случае равен нулю.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 14:38   #11
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

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


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 15:03   #12
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Эффект от её наличия в лучшем случае равен нулю.
Эффект от четкого понимания какая область памяти перегружена только в худшем случае равен нулю. Информация ни когда не бывает излишней. Как ее использовать, это другое дело.
tvf вне форума   Ответить с цитированием
Старый 07.05.2013, 15:11   #13
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Попробуйте грамотно сформулировать свою мысль, если вы действительно заинтересованы в ответе.
Возьмите любой офисный калькулятор. И увидите там кнпку (+/-) - кнопка смены знака числа. Вот этой операции и не хватает. По большому счету это битовая операция, которая требует минимум ресурсов контроллера (по сравнению с умножением на -1, чем приходится пользоваться сейчас). В моей практике используется очень часто, гораздо чаще чем модуль числа, который тоже является битовой операцией.
tvf вне форума   Ответить с цитированием
Старый 07.05.2013, 15:28   #14
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Эффект от четкого понимания какая область памяти перегружена только в худшем случае равен нулю.
Перегружена всегда Flash.



Цитата
Сообщение от tvf Посмотреть сообщение
Информация ни когда не бывает излишней. Как ее использовать, это другое дело.
Сама по себе информация - да. Но только при условии, что она "бесплатна".


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 15:38   #15
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Перегружена всегда Flash.
Вот что пишет по этому поводу Overheat:
Цитата При написании графического ядра увеличился размер флеши занимаемой ядром. Но размер fbd проектов в 2G ограничивает не флеш, а ОЗУ. Поэтому существенных ограничений новое ядро не принесло.
Вы уж как нибудь определитесь.
http://forum.segnetics.com/showthrea...EE%E2#post5649
Цитата Сама по себе информация - да. Но только при условии, что она "бесплатна".
Я покупаю ваши контроллеры. Следовательно плачу.
tvf вне форума   Ответить с цитированием
Старый 07.05.2013, 15:38   #16
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Возьмите любой офисный калькулятор. И увидите там кнпку (+/-) - кнопка смены знака числа.
По большому счету это битовая операция, которая требует минимум ресурсов контроллера (по сравнению с умножением на -1, чем приходится пользоваться сейчас). В моей практике используется очень часто, гораздо чаще чем модуль числа, который тоже является битовой операцией.
Вы задаёте вопрос с позиции программиста. Но формулируете его, извините, как продавец мороженого.

Сам вопрос я понимаю. Я не понимаю, к чему его я должен приложить.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 08.05.2013 в 17:04
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 15:39   #17
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Вот что пишет по этому поводу Overheat: Вы уж как нибудь определитесь.
Я тоже это читал.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.05.2013, 15:45   #18
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Вы задаёте вопрос с позиции программиста. Но формулируете его, извините, как продавец мороженого.
Сам вопрос я понимаю. Я не понимаю, к чему его я должен приложить.
Может я и есть продавец мороженного, на досуге занимающейся программированием.
Если вопрос ясен, то надо добавить эту функцию в лоджик. Название функции на ваше усмотрение.
tvf вне форума   Ответить с цитированием
Старый 07.05.2013, 16:20   #19
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Может я и есть продавец мороженного, на досуге занимающейся программированием.
Если вопрос ясен, то надо добавить эту функцию в лоджик. Название функции на ваше усмотрение.
Ясно. Вопросов больше не имею.

Вот ваша функция:
Вложения
Тип файла: msl q.msl (3.2 Кбайт, 127 просмотров)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 08.05.2013, 06:51   #20
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Вот ваша функция:
Тогда уж до кучи и для переменных типа real и long надо.
tvf вне форума   Ответить с цитированием
Старый 08.05.2013, 07:25   #21
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Вот ваша функция
Вдогонку. И блок болжен быть с 1 входом и 1 выходом. На входе произвольное число, на выходе число с измененным знаком. Без строба.
tvf вне форума   Ответить с цитированием
Старый 08.05.2013, 11:41   #22
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Тогда уж до кучи и для переменных типа real и long надо.
Цитата
Сообщение от tvf Посмотреть сообщение
Вдогонку. И блок болжен быть с 1 входом и 1 выходом. На входе произвольное число, на выходе число с измененным знаком. Без строба.
Я выполнил задачу ровно в том виде, как вы её поставили. И ровно тем способом, который вы мне указали.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 08.05.2013, 12:39   #23
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Я выполнил задачу ровно в том виде, как вы её поставили. И ровно тем способом, который вы мне указали.
1. Я ни где не говорил про строб. Это вы уже от себя добавили. Использование строба может и добавляет функциональности, но в контексте задачи бесполезно жрет ресурсы контроллера (память). Мой вариант без строба и для типов int и long.
2. Для переменых типа real задача не решена.
3. Решение задачи подобными методами экономит процессорное время, но память контроллера все равно используется не оптимально. Сиди эта функция в ядре, было бы лучше.
4. Решение задачи для переменных типа real требует или специфического преобразователя real-long (без изменения структуры данных, по большому счету просто смена цвета вывода у переменной, что бы переменную типа real можно было обрабатывать блоками для long переменных) и обратного преобразователя long-real или реализация через функцию в ядре контроллера. Ни то ни другое сам я сделать не могу.
Вложения
Тип файла: msl q-мой.msl (4.3 Кбайт, 48 просмотров)
tvf вне форума   Ответить с цитированием
Старый 08.05.2013, 12:50   #24
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
1. Я ни где не говорил про строб. Это вы уже от себя добавили.
Про строб вы говорили, упоминая калькулятор: "Возьмите любой офисный калькулятор. И увидите там кнпку (+/-) - кнопка смены знака числа. Вот этой операции и не хватает".

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



Цитата
Сообщение от tvf Посмотреть сообщение
2. Для переменых типа real задача не решена.
Не было никаких указаний на тип данных. Я выбрал тот, который использую чаще других.


Другими словами: всё в соответствии с вашим ТЗ.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 08.05.2013, 12:58   #25
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Котроллера под рукой нет, поэтому не проверял. Судя по вопросу, работать не будет. Надо будет сделать еще пару манипуляций, связанных с особенностью хранения отрицательных чисел в int и long. Но меня интересует прежде всего real. Там подобных фокусов быть не должно.
tvf вне форума   Ответить с цитированием
Старый 08.05.2013, 13:41   #26
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Котроллера под рукой нет, поэтому не проверял. Судя по вопросу, работать не будет.
Конечно не будет. Предложенный вами способ смены знака неработоспособен. Но я всё равно использовал именно его, так как вы на этом настаивали.

Другими словами: всё в соответствии с вашим ТЗ.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 08.05.2013, 14:22   #27
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Предложенный вами способ смены знака неработоспособен
1. Это относится к int и long. И то если реализовывать втупую, без учета формата записи чисел. А как с real? Меня интересует прежде всего именно этот тип. Ответте и на этот вопрос.
2. Реализация функции смены знака числа в ядре избавит от возможных ошибок.
3. Само ваше поведение с размещением заведомо нерабочего макроса на сайте сильно смахивает на подставу. Меня хотели подставит? Так я бы все равно выловил ошибку. А как другие пользователи? Могут ведь за чистую монету принять. Удалите и свой и мой макрос. Иди доведите до работоспособного состояния.
tvf вне форума   Ответить с цитированием
Старый 08.05.2013, 15:29   #28
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
1. Это относится к int и long. И то если реализовывать втупую, без учета формата записи чисел. А как с real? Меня интересует прежде всего именно этот тип. Ответте и на этот вопрос.
Думаю, это наверняка описано в стандарте на этот тип данных.



Цитата
Сообщение от tvf Посмотреть сообщение
2. Реализация функции смены знака числа в ядре избавит от возможных ошибок.
Чесное слово, лично я не вижу способа ошибиться в операции умножения на '-1'.



Цитата
Сообщение от tvf Посмотреть сообщение
3. Само ваше поведение с размещением заведомо нерабочего макроса на сайте сильно смахивает на подставу. Меня хотели подставит? Так я бы все равно выловил ошибку. А как другие пользователи? Могут ведь за чистую монету принять. Удалите и свой и мой макрос. Иди доведите до работоспособного состояния.
Вы сказали мне, что знак изменяется инверсией бита. Я вам доверился как специалисту. Неужели вы меня обманули? Нехорошо как получилось...


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 13.05.2013, 08:29   #29
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Чесное слово, лично я не вижу способа ошибиться в операции умножения на '-1'
Не передергивайте. Речь шла не об ошибке при умножении на "-1", а об ошибке при реализации алгоритма реализующего эту функцию без использования собственно операции умножения.
Цитата Думаю, это наверняка описано в стандарте на этот тип данных
В стандарте данных для типа real прямо написано, что знак числа определяется старшим битом. Сделайте возможность инвертировать этот бит без операции умножения.
Цитата Вы сказали мне, что знак изменяется инверсией бита. Я вам доверился как специалисту.
Ну тогда и я доверился вам как специалисту, да еще с большим опытом и т.д. и т.п. и начал модифицировать ваш макрос в полной уверенности в его работоспособности. Да еще закрыли макрос для пущей важности. Во вложении 2 варианта решения задачи. На этот раз рабочие. Для переменных типа int. Для long аналогично. Теперь за вами вариант для real.

В любом случае максимальный эфект будет только при реализации функции смены знака через ядро.
Вложения
Тип файла: msl out n=-in.msl (4.4 Кбайт, 44 просмотров)
tvf вне форума   Ответить с цитированием
Старый 13.05.2013, 10:42   #30
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Не передергивайте. Речь шла не об ошибке при умножении на "-1", а об ошибке при реализации алгоритма реализующего эту функцию без использования собственно операции умножения.

за вами вариант для real.

В любом случае максимальный эфект будет только при реализации функции смены знака через ядро.
Почему вы решили, что умножение на -1 уже не производится таким образом?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка загрузки карты памяти barmaglot-s Вопросы о SMH2010 5 04.12.2017 10:53
SMH-2Gi и модуль памяти max7222 Вопросы о SMH-2G(i) 1 21.04.2017 11:04
Составление карты памяти ПЧ sbatrov Связь с внешним миром 6 29.10.2015 16:38
Достаточно ли размера модуля памяти для сохранения проекта? asen Вопросы о Pixel 5 07.10.2015 17:11
Распределение памяти в SMArt Max2114 SMArt 6 02.04.2012 15:22


Часовой пояс GMT +4, время: 13:38.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023