WINAVR

Reply to
Alex Mogilnikov
Loading thread data ...

Hello, Andrey Solomatov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 27 Oct 2005 11:37:44

+0000 (UTC):

DO>>>> Где и когда это интерпретируется как ошибка?

AS> На "прикладном уровне". Или мы программируем исключительно для AS> своего удовольствия?

На каком таком прикладном уровне? Еще раз, и последний. Операция сложения и вычитания не зависит от того знаковые типы используются или нет. Соответственно и реализуется одинаково. И если есть перегруженные рантаймовыми проверками языки, то это вовсе не означает что это делается везде. В С этого не делается вообще никогда.

AS>>> В флаге OVR или аналогичном.

DO>> В каком ЯВУ есть флаг OVR?

AS> Нигде нету.

Так о чем ты говоришь?

AS> Поэтому в каждом извращаются по своему обрабатывая ошибки AS> вычислений.

Нет никакой ошибки. Как интерпретировать 0x80 как 128 или как -1 - выбор программиста, процессор об этом ничего не знает и 0x7f+1 всегда 0x80.

DO>> Да ну? А я почему-то всегда думал, что используется флаг DO>> переноса...

AS> Ага. Апшипся я.

Причем дважды...

AS> [кусь] AS>>>>> p++; /* скажешь не хак? */

DO>>>> Нет конечно.

AS>>> Угу. С учётом того, что теперь указатель указывает неизвестно на что.

DO>> А на что ты хотел, чтобы он указывал, когда писал это?

AS> Никуда не хотел.

Тогда зачем писал?

AS> Это принципиально непроверяемая операция - куда оно полезет.

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

AS> Давайте вернём автоматическое объявление переменных, как в AS> фортране - начало на i, j, k - целые.

Какая связь собственно? Объявление переменных не жрет ресурсы целевой системы.

DO>> Какого? Впрочем я и в стандартном виртовском паскале тебе DO>> сделаю все что угодно с любыми указателями. Есть там такой DO>> механизм, как вариантный тип (аналог сишного union или DO>> фортрановского common), который позволяет хакерствовать как DO>> угодно.

AS> Для этого надо усиленно извращаться. Поэтому, я думаю

Не надо, надо просто знать язык...

AS> специально не делали, что не сделали варианты "более удобными для хака".

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

AS>>> А я всегда предпочитаю вывод организовывать в виде множества AS>>> маленьких функций, специализированных под данную AS>>> переменную/поле.

DO>> А Борланд в своих библиотеках предпочел процитированный DO>> способ.

AS> Ну и что? Я этим способом не пользовался никогда.

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

AS> Я обязан пользоваться всеми приколами Бормонда?

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

DO>> В printf кстати весьма продуманный механизм шаблонов заложен. DO>> Куда более развитый, чем в паскалевском write

AS> Вполне возможно, что он продуманный. Только всё равно - ломы.

Твои проблемы. Исключительно. Другим, как видишь, не ломы.

DO>> А что будешь делать, если понадобится? Вот есть у меня DO>> программа (кстати мне ее мой товарищь на Дельфи писал), DO>> которая "разговаривает" с микроконтроллером и вытаскивает из DO>> него всякие значения. Ток, напряжение, мощность... Причем DO>> программа в контроллере не жестко фиксивана. В зависимости от DO>> версии и типа устройства параметры там хрянятся по разному, DO>> причем не все версии уже есть.

AS> Типа "система калибровки"?

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

DO>> единицах и с какой точностью это выводить. Так вот последнее DO>> задается тем самым шаблоном из какой-то дельфийской функции, DO>> похожим на printf'овский шаблон.

AS> Я бы скорее всего полюнул и сделал маленькую функцию на AS> встроенном асме.

Куда плюнул, какую функцию, за каким хреном там ассемблер? И зачем ее делать, если она уже сделана? Просто в С тоже самое получается изящней.

AS> Или на самом паскале. Поскольку задача преобразования числа в AS> строку хорошо формализована, и подогнать её "под себя" не AS> слишком трудно.

Нет, ну можно какждый раз восход солнца осуществлять вручную, только зачем?

AS> Плюс ко всему дополнительно - неизвестно, что проще - сделать AS> удобный "для себя" (ввода) и заполнения пользователем формат AS> конфига + и потрахаться с реализацией вывода - или наоборот, AS> "трахаться" со вводом готового формата + лёгкий вывод.

Удобный сделать конечно можно, причем в функции printf это уже сделали. Можно конечно сделать и другой, но я не очень понимаю зачем широкоизвестный формат заменять чем-то другим. И писать свои функции вместо того, чтобы взять готовые.

DO>> Нет, это именно язык, про который тут говорили как про продуманный. DO>> Впрочем возможность не вычислять полностью логическое DO>> выражение - это как раз и есть ТР'шное расширение. Мне DO>> интересно чем надо было думать, чтобы вычислять его DO>> полностью...

AS>>> Си тоже сегодня можно загнать в режим K&R. И?

DO>> Далеко не всякий компилятор это поддерживает, а если да, то DO>> это не будет стандартным С.

AS> Ну тогда не надо говорить про "ключики" в TP.

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

AS>>> CCM0.ACC0 = 1; // Это вроде работает AS>>> CCM0.CCMOD0 = 3; // А это - нет. :((

DO>> А что делает?

AS> Задаёт режим капкомовского модуля. А это важно?

Нет, важно во что компилируется.

DO>> А авторов ТР как видишь напрягло, раз они formatstr написали...

AS> А меня её существование никогда не интересовало. И?

И ты - не показатель, в отличие от поставляемых с компиляторов примеров и библиотек.

AS> Дабы сэкономить место - на следующее письмо я здесь отвечу. AS>>> CCM0.CCMOD0 = 3; // А это - нет. :((

DO>> Да, забыл сказать, что из имеющихся сходу под рукой BC, DO>> picc16 и picc18 компиляторов твой пример работает во всех DO>> трех. Очевидно, строка DO>> CCM0.CCMOD0 = 3; компилируется в две инструкции and и or DO>> (естественно я выкинул _at(0xff52)). Могу проверить еще на DO>> нескольких, но давай сначала ты приведешь свой листинг.

AS> Да не надо проверять - я тебе так скажу.

Что ты мне скажешь? Мне листинг посмотреть интересно.

AS> Tasking C166 v.2.7 r5. AS> Компилер интересный - у меня некоторые замороченные макросы, AS> нормально прошедшие BC5 препроцессор - в нем "сдохли". AS> Предлагать "уйти" не надо - целевая платформа на нём + софт AS> пишется не мной одним.

Зачем уходить? Делаешь пример, пишешь письмо в саппорт и они исправляют ошибку. Я так делал и получал, причем быстро, исправленную версию.

AS> Пытался я когда-то сделать программу с выделенной AS> конфигурацией в отдельный файл - AS> но не вышло, а исходники давно потерялись.

Это ты о чем?

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Dimmy Timchenko
Reply to
Nickita A Startcev
Reply to
Nickita A Startcev
Reply to
Andrey Solomatov
Reply to
Dennis Opanasenko
Reply to
Alex Mogilnikov
Reply to
Alex Mogilnikov

Hello, Andrey Solomatov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Fri, 28 Oct 2005 09:59:21

+0000 (UTC):

DO>> На каком таком прикладном уровне?

AS> Вот у нас есть матмоделька, которая по параметрам AS> (температуре, давлению и расходу воздуха на входе) определяет AS> давление во входном трубопроводе. AS> Что-то мне подсказывает, что результат операции типа 127+10 = AS> -10 будет рассматриваться в ней как ошибка.

Так это то, что я тебе несколько дней назад говорил, ты только сейчавс начал понимать? "Плюс" в математике и в программировании - совершенно разные, хоть и похожие вещи.

DO>> Еще раз, и последний. Операция сложения и вычитания не DO>> зависит от того знаковые типы используются или нет. DO>> Соответственно и реализуется одинаково.

AS> Пофик мне реализация. Разработкой схемотехники MCU я не занимаюсь -

Тебе вообще, как я посмотрю, все по-фиг.

DO>> И если есть перегруженные рантаймовыми проверками языки, то DO>> это вовсе не означает что это делается везде. В С этого не DO>> делается вообще никогда.

AS> По видимому фирма Microsoft с вами не согласна - бо включила AS> такую возможность. Да и эхотажный Altium:

AS> Файл float.h:

Ну и причем тут float? Ты, похоже, вообще не понимаешь что говоришь.

DO>> Нет никакой ошибки. Как интерпретировать 0x80 как 128 или как -1 - DO>> выбор программиста, процессор об этом ничего не знает и DO>> 0x7f+1 всегда 0x80.

AS> Мы обсуждали ЯВУ, а не представление данных в процессоре.

Какой именно ЯВУ?

AS>>>>> Угу. С учётом того, что теперь указатель указывает AS>>>>> неизвестно на что.

DO>>>> А на что ты хотел, чтобы он указывал, когда писал это?

AS> Похакерствовать. ;))

Похакерствовал?

AS> Произвольный доступ в любое место памяти, не котнролируемый AS> механизмами типизации - явный хак, и от того, что указатель

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

AS>>> Это принципиально непроверяемая операция - куда оно полезет.

DO>> Принципиально проверяемая, только на фиг это не нужно.

AS> Ну и как проверить, что int *p; p + 100 указывает на что-то AS> конкретное, а не в пустоту?

Отслеживать рантайм.

DO>> Обращение по индексу за пределы массива проверяемо точно так DO>> же, но это

AS> Обращение за пределы массива проверяемо хотя-бы в случае AS> статических выражаний.

Толку-то.

AS> Плюс в некоторых архитектурах (а-ля i432, i386 и выше) - AS> массив может объявляться в сегменте.

А в некоторых - нет.

DO>> А то, что ты видимо просто не писал больших развитых программ на ТР. DO>> Потому и не пользовался, не знаешь, знать не хочешь и все такое. А DO>> Борланд писал (я тоже писал, но Борланд полагаю авторитетней).

AS> Ради бога, всё может быть. AS> Борланд может делать всё что угодно, я - тоже.

Только с разным результатом. Что написал ты никому не ведомо, в отличие от написанного Борландом.

DO>> Нет, нет никакой калибровки. Совершенно не важно что это за DO>> система, хотя если это интересно, я могу рассказать.

AS> Просто существует такая хрень, которая занимается именно этим.

Какая хрень и чем занимается?

DO>> Важно, что заранее РСшная программа не знает и не может DO>> знать что это будут за параметры и в каком виде их следует DO>> представлять. Это должно конфигурироваться по месту, а значит DO>> формат представления данных необходимо описывать как-то. И DO>> всего лучше это делать общепринятым сишным способом, не DO>> изобретая какждый раз что-то новое.

AS> Вероятно. Правда в реальных изветных мне решениях используется всякая AS> херня типа dam- или ASAP-файлов. Вот так примерно:

AS> 23, /SPZ, AIMVM, {number of speedpulses for calibration of AS> vehicle speed signal}, 1, $BAAD4, $BAAD4 /SPW, 145, 2, 0.001, AS> 10 /SPX, 0, 0, 0, 0, 0 /SPY, 0, 0, 0, 0, 0 /FKX, 0, 0, 0 /FKY, AS> 0, 0, 0 /ABL, 0;

И что это значит? Это шаблон вывода?

DO>> Куда плюнул, какую функцию, за каким хреном там ассемблер? И DO>> зачем ее делать, если она уже сделана? Просто в С тоже самое DO>> получается изящней.

AS> Я бы заподорил, что "подлый" обязательно впишет в поля AS> какую-нибудь ерунду,

Ерунду впишет, ерунду и увидит, какие проблемы?

AS> а обрабатывать ошибки форматированного ввода-вывода во всех известных мне AS> ЯВУ в равной степени фигово.

Не надо ничего обрабатывать, это шаблон вывода, ты все увидишь сам.

DO>> Удобный сделать конечно можно, причем в функции printf это DO>> уже сделали. DO>> Можно конечно сделать и другой, но я не очень понимаю зачем DO>> широкоизвестный формат заменять чем-то другим. И писать свои DO>> функции вместо того, чтобы взять готовые.

AS> Вообще-то этот формат "широкоизвестен" в лишь узких кругах. AS> Т.е. я вообще не могу припомнить никакого конфига, который AS> опирался бы на формат Си-шных шаблонов. AS> Отчего-то.

Вероятно он просто тебе не попадался... Мне (от чего-то) не пришлось долго такой искать. Конфиг web-сервера Apache, формат log-файла

# # The following directives define some format nicknames for use with # a CustomLog directive (see below). # LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent

AS>>>>> CCM0.ACC0 = 1; // Это вроде работает AS>>>>> CCM0.CCMOD0 = 3; // А это - нет. :((

DO>>>> А что делает?

AS> [кусь] AS> Оно *не* проходит компиляцию.

Пиши в саппорт, это ошибка.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Alex Mogilnikov
Reply to
Vladimir Vassilevsky

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.