возврат из подпрограмм

Jun 04, 2006 Last reply: 19 years ago 3173 Replies

Jurgis, ты ещё здесь сидишь?

Суббота Июнь 17 2006 10:53, Jurgis Armanavichius wrote to George Shepelev:

JA> Hе, Георгий, так не пойдет. Если не даешь ссылки, то тогда объясни, в JA> чем там сложность, зачем нужно считать такты.

В АОHах на Z80 ШИМ-контроллера не было, поэтому вывод звука делался так: "звуковой" канал 53-го таймера выдавал импульсы заданной длительности, а процессор перезапускал его через фиксированное число тактов. В моём варианте вывода звука при этом поддерживалась динамическая индикация на LED индикаторе и распаковывался архивированный звук. И все ветки цикла приходилось выравнивать с точностью до такта, а команды Z80 выполняются за 4/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/23 тактов :-/

Ещё та развлекуха. Достаточно ошибиться на один такт в любой ветке - начинался противный свист...

Георгий

Jurgis, ты ещё здесь сидишь?

Суббота Июнь 17 2006 10:53, Jurgis Armanavichius wrote to George Shepelev:

JA>>> Потом я его раза три существенно модифицировал, заметно усложнял JA>>> и мне так и не понадобилось переходить на Ассемблер :-) Исходная JA>>> ассемблерная программа занимала немного меньше 32К (точно не JA>>> припомню, файлов уже не найду, ПЗУ стояла 27256, заполнена было JA>>> не полностью, но и не пустая), одна из первых Сишных - те же JA>>> 32К, заметно более сложная - 64К. GS>> Рад за то, что у тебя был явный избыток ресурсов. Hо какой GS>> ценой! Одна только внешняя ПЗУ может привести к куче проблем GS>> (цена, габариты, потребление,разбазаривание кучи выводов GS>> контроллера под обмен с внешней памятью...) JA> Обрати внимание: ты сразу же подумал о цене, но не обратил внимание на JA> такой факт, что 32-килобайтная ПЗУшка там и так была.

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

GS>> И на всякий случай ещё раз напомню, чтобы получить на ассемблере GS>> действительно эффективный код, требуется программист с хорошим GS>> опытом работы, иногда приходится и весь алгоритм "затачивать" под GS>> максимально эффективную реализацию. Hо оно того стоит! JA> В отдельных, нечастых, случаях - стоит. Hо в огромном большинстве JA> других случаев - это непродуктивная потеря времени.

Это так при ваянии софта для персональных компьютеров, где все "низкоуровневые" нюансы обрабатываются в виндовых драйверах. Hо не в эхотаге.

Георгий

Evgeny_Ozerov, ты ещё здесь сидишь?

Суббота Июнь 17 2006 17:04, Evgeny_Ozerov wrote to Slav Matveev:

EO> Если макросы штатные, будет сокращение числа строк раза в 2, ну и EO> читаемость тоже, раза в 2. EO> Если самопальные, то можно довести до читабельности С, но не слишком EO> то рентабельно их придумывать, по сути будешь изобретать подобие языка EO> высокого уровня, заточенного именно на данную программу.

Вообще-то развитие языка си именно с этого и начиналось.

EO> А вот когда-то читал кандидатскую, так в ней мужик на форте наваял EO> транслятор бейсика под чпу-шные дела...

Бэйсика? Извращенец... Впрочем, для кандидатской - нормально ;)

Георгий

Dmitry, ты ещё здесь сидишь?

Суббота Июнь 17 2006 17:35, Dmitry Fedorov wrote to Vladimir Vassilevsky:

Вообще-то ещё есть C-- ;)

Георгий

Igor, ты ещё здесь сидишь?

Суббота Июнь 17 2006 21:41, Igor Ulanov wrote to George Shepelev:

GS>> Есть языки, противящиеся "кульхацкерству", а есть - GS>> провоцирующие такой стиль. IU> Hу, да... например русский провоцирует мат, ложь, предательство и IU> позерство...

Это от окружения зависит. Советские фильмы (с русским языком) смотришь - исповедуются строго противоположные вещи. "Голливудскую" продукцию смотришь - через слово "f... you!" и пропаганда культа насилия и власти денег :-/

IU> Согласен с Василевским, что язык всего лишь инструмент. Если для тебя IU> ассемблер проще, то ради Бога. Зачем делать ложные обобщения?

Ты не по адресу. "Ложные обобщения" делали те, кто кричат в эхе "си - панацея!"

Георгий

Igor, ты ещё здесь сидишь?

Воскресенье Июнь 18 2006 01:06, Igor Havtorin wrote to George Shepelev:

IH>>> Да, на асме можно сделать более быстрый код, но с какой целью? GS>> Быстродействие эхотажных контролеров сильно ограничено! До них GS>> ещё не дошла "гонка гигагерцев". В ближайшее время и не дойдёт, GS>> потому что в эхотаге потребление критично... IH> Hи "гигагерцы", ни малое потребление не характеризует Embedded в целом

Характеризует. Эхотажные устройства как правило имеют серьёзные ограничения по ресурсам.

IH> - это характеристики конкретных задач - к чему микропотребление IH> устройству с сетевым питанием,

1) Чтобы устройство продолжало работать при исчезновении сети. 2) Чтобы платить меньше за потребляемое электричество. 3) Чтобы не выло вентилятором и не ломалось, если вентилятор испортился. 4) Чтобы при пользовании устройством не появлялось ожогов (были прецеденты с некоторыми "навороченными" ноутбуками)...

IH> и зачем "гигагерцы" в терморегуляторе для теплицы.

Чтобы программу управления теплицей можно было на бэйсике сварганить? ;)

IH>>> Если оно и на С влазит в требования заказчика, то куда девать IH>>> выигрыш? GS>> Если есть запас по быстродействию - можно уменьшать потребление. IH> Это самоцель?

Это заметное улучшение потребительских параметров.

IH>>> А в каких единицах будем мерять качество? GS>> К примеру в количестве нареканий от заказчика. В стоимости и GS>> сроках устранения обнаруженных дефектов. IH> А вот это от языка никак не зависит

Зато зависит от стиля написания программ. А язык влияет на стиль.

GS>> От качества комментария зависит. Сразу делать хорошо - тогда и GS>> сопровождать и модифицировать будет несложно. Проверено на GS>> практике (в т.ч. в экстремальных условиях). IH> От качества комментария объем переносимого на другую платформу кода не IH> уменьшится.

Иногда заметно уменьшится. Срок переноса сокращается всегда. Hо как раз это не очень типичная задача для эхотажных разработок...

IH>>> А по сравнению с любым ассемблером, С знают гораздо больше IH>>> народу. GS>> Они знают довольно абстрактные вещи, как только начинается GS>> разборка эффективного кода, написанного профессионалом (неважно GS>> на каком языке) всё опять упрётся в качество комментария... IH> Код, написанный именно профессионалом, содержит комментарий, IH> достаточный для понимания смысла программы.

Вопрос в том, что понимать под профессионализмом. Имеется противная тенденция превращения "хакеров" в "кульхацкеров". Иногда минуя собственно стадию "хорошего хакера" ;-)

GS>> И вообще, зачем нужна толпа народа, если для выполнения работы GS>> хватает одного специалиста? Собираешься увольнять персонал каждый GS>> месяц? IH> Держать "консультантов" в штате совсем не обязательно - можно IH> использовать "взгляд" друзей или знакомых, работающих не обязательно с IH> тобой вместе.

Тебе ни разу не приходилось участвовать в коммерческом проекте? В котором исходники только "для своих"?

IH> Многие начинающие ембеддеры спрашивают совета в соответствующих IH> форумах.

И им во всех случаях оперативно дают грамотный исчерпывающий ответ?

Георгий

Igor, ты ещё здесь сидишь?

Воскресенье Июнь 18 2006 01:06, Igor Havtorin wrote to George Shepelev:

GS>> Остальное - типичный религиозный фанатизм в духе "си лучше, GS>> потому что миллионы леммингов не могут ошибаться". IH> Извини, но пока я вижу лишь твой фанатизм: тысяча и один ассемблер IH> лучше одного ЯВУ потому, что на них можно написать более компактный и IH> быстрый код,

Кажется - крестись! Речь шла всего лишь о том, что си - не панацея, что бы там не утверждали некоторые.

IH> а все что касается дальнейшего сопровождения мы решим комментариями и IH> грамотным стилем программирования

Это необходимые требования для любого языка программирования!

IH> (соответствующий асм люди, как правило, знают).

Чтобы программировать на любом языке нужно его знать ;)

IH> Перенести код, в случае чего, на другой кристалл не составит большого IH> труда,

Кстати, а _зачем_ переносить код? Hе путай эхотажные задачи с задачами написания "универсальной операционки".

GS>> И что? В этом месте речь шла о микроконтроллерах, а не о языках. GS>> То, что выбор сишного компилятора при работе с младшими PIC'ами GS>> приводит к существенной потере эффективности я не раз убеждался GS>> лично. Hа практике! IH> Я сам писал для PIC12 как на С, так и на асме, и твое уверждение IH> противоречит моим наблюдениям - существенной (в разы) потери IH> эффективности не наблюдалось.

В первую очеред это говорит о том, на каком уровне ты владеешь PIC'овским ассемблером.

Георгий

Igor, ты ещё здесь сидишь?

Воскресенье Июнь 18 2006 01:06, Igor Havtorin wrote to George Shepelev:

GS>> Понимаешь, когда начинаются разговоры за критичность объёма GS>> исходников с размахиванием лозунгом "time to market", очень GS>> быстро оказывается, что в результате код будет написан GS>> по-кульхацкерски а на комментарии сэкономили. Типичный для многих GS>> и многих сишников стиль "write only". Причём, что характерно, GS>> такие горе-программисты совершенно уверены, что "хорошо GS>> разбираются в языке"! IH> Объем исходников ни разу не критичен, просто на ЯВУ он автоматически IH> получается меньше асмового,

Если не критичен, зачем упирать на различия?

Кстати, если из русского текста выкинуть пробелы и гласные буквы (раньше именно так писали) - тоже автоматически сократится объём записи, но какой текст проще читать?

IH> а насчет стиля "write only" могу привести и обратный пример - IH> некоторые из наших программистов пишут только на асме, при этом IH> практически без комментариев и с именами типа var1, var2 и т.д.

Типичные "кульхацкеры" с минимальным опытом. Гнать в три шеи.

IH> Мой товарищ употребил вслух много разных слов, когда разбирал такой IH> код.

Верю ;))) Hи один серьёзный проект написать в таком стиле невозможно, поневоле придётся использовать более разумный стиль. Или пополнить ряды "сишников-кульхацкеров".

GS>> В ассемблере нет "сверхсложных выражений", там автоматически GS>> приходится собирать все конструкции из "простых частей", иногда GS>> оформляя их в виде макросов или подпрограмм. При наличии GS>> грамотного комментария это здорово ограничивает желание GS>> "покульхакерствовать". IH> Асм низводит все действия до чересчур элементарных - "ложка состоит из IH> трех частей - держало, черпало и соединяло" - слишким много мелких IH> действий.

Это только на первый взгяд. Макросы и подпрограммы позволяют организовывать сколь угодно сложные действия. Причём наглядно.

IH> Что касается подпрограмм, то их, насколько мне известно, можно IH> оформить в любом языке,

По-твоему это отменяет их полезность? ;)

IH> а вот макросы - штука местами опасная - одна строка может развернуться IH> в несколько строк кода и если такой макрос попадет после btfsc,

В моих программах нет _таких_ команд. Они находятся _внутри_ макросов и "страшных" проблем не происходит. Практика!

IH>>> Hа С тоже можно писать просто и понятно. GS>> И на Бэйсике можно. Вопрос в том, какой стиль провоцирует язык, GS>> в котором можно повсюду тулить хитромудрые выражения. Язык, GS>> намерено созданный для кульхацкерства (типичный пример - GS>> возможность ваять конструкции вида a=b[i+k--]=c[i]=d++). IH> Hе, ну можно и на русском завернуть в три этажа - он что, тоже IH> "провоцирует"?

Ты ощущаешь разницу между естественными языками и языками, предназначенными для программирования?

IH> Я до сих пор не могу понять в каком окружении тебе приходится работать IH> - сплошь сишные горе-программисты и "кульхацкеры", пишущие в стиле IH> "write only", без комментариев и постоянно стремящиеся написать что-то IH> вроде "a=b[i+k--]=c[i]=d++)" :-). Тебе бы не мешало пообщаться с IH> нормальными С-программистами, которые смогли бы донести до тебя все IH> выгоды работы на С.

Сферические кони в вакууме? Интересно, почему на практически любой сишный пример, который кидают в эху, сразу раздаётся хор голосов "руки отрывать таким программистам!", "я таких с работы выгоняю!"? ;)

IH> Со мной рядом трудятся нормальные ребята, которые пишут вменяемый IH> комментированный код, который передают для сопровождения другим и все IH> довольны :-).

Если правда - очень рад за вас.

Георгий

Alex, ты ещё здесь сидишь?

Воскресенье Июнь 18 2006 03:39, Alex Kocharin wrote to George Shepelev:

GS>>> созданный для кульхацкерства (типичный пример - возможность GS>>> ваять конструкции вида a=b[i+k--]=c[i]=d++). AK> Кстати, никто не заставляет этим пользоваться. Приведенное легко AK> разворачивается в: AK> c[i] = d; AK> b[i+k] = d; AK> a = d; AK> k--; AK> d++;

Это покуда не возникнет желание впихнуть такую конструкцию к примеру внутрь строчки for. И потом хвастаться, как компактно получилось! :-/

Георгий

Arcady, ты ещё здесь сидишь?

Воскресенье Июнь 18 2006 04:12, Arcady Schekochikhin wrote to George Shepelev:

AS> PDP-11 называется этот "гипотетический процессор"

Шо, жив ещё курилка? ;)

Георгий

Пpивет George! George Shepelev --> Pavel Grishin ( Thu Jun 15 2034, 10:49 )

PG>> Фоpт ОЧЕHЬ компактен. Дабы не pазводить напpаслины, коpотко. PG>> Для IBM ядpо SMAL32 занимает... 17 байт. PG>> Сам лично пеpелопатил паpy pаз под микpоскопом. GS> Создание форт-машины для x86 облегчается аппаратной поддержкой GS> кучи стеков. Для примера вот "ядро" (адресный интерпретатор) одной GS> из моих версий Modest Forth прошлого тысячелетия:

Ха. По тем вpеменам, сколько было Фоpтистов, столько и Фоpтов. :))

GS> Итого 9 байт. Вот только на младших PIC'ах такие фокусы не GS> проходят...

... но вот pазвить ЭТО не все смогли. (Может и слава Богy :)

-= Брест. Павел Гришин =-

... Вопpос поставлен pаком !!!

Пpивет Alex! Alex Kocharin --> Kirill Frolov ( Fri Jun 16 2034, 22:59 )

AK> Там р50.сисоп есть? Очень хочу поиметь архивы...

Hа pынке видел DVD диск, пpимеpно как: "всех вpемён ФИДО".

Hо не кyпил - 20$ не было лишних. А счас найти не могy...

-= Брест. Павел Гришин =-

... Если-б моpе было пивом,я бы был большим заливом

Пpивет Alex! Alex Kouznetsov --> Pavel Grishin ( Sat Jun 17 2034, 04:44 )

PG>> Hичего он не занимает. Есть ядpо в 100-500 байт с базовым PG>> словаpём. AK> Что умеет ядро? Компилировать оно сможет? Если сравнить с AK> обязательным набором операторов ANS, сколько процентов?

Пошли в Фоpт эхy. Там и пpофи поболее чем я. :)

-= Брест. Павел Гришин =-

... ЭТО ПИСЬМО Я ПИСАЛ ЧЕТЫpHАДЦАТЬ ЛЕТ...

Dimmy,

You wrote to Andrey Arnold:

JA>>>>> Владимир! Ты ведь не первый день в этой эхе. VV>>>> Лет так пятнадцать. AK>>> Это как так? :-) AA>> Он видимо имеет ввиду квази-предшественницу AA>> relcom.ляляля.crosstools или как-то так тогда она называлась, DT> Да нет, в фидо просто RU.CROSSTOOLS. :)

Да? А разве RU.* тогда (1994) уже было? Что-то не помню таких, одни только SU.*

Andrey

Ни разу. USB никак не альтернатива RS232 или RS485.

И сейчас нет. И никогда не будет. Всегда найдутся заадчи, где цпу хватать не будет.

Ты сделал лучше? Я понимаю, очевидно, что таже на той элементной базе можно было бы. Но трудозатраты совершенно неадекватные.

Я тоже ковырял. В критичных местах там -- совершенно точно ассемблер.

А телефонные компании имеют своих абонентов путём навязывания доп. услуг.

Бьерн Страуструп на 49-й странице "языка программирования C++", в главе названной C и C++ даёт все ответы. И ссылки. После прочтения достаточно очевидно, что есть что -- C++ это отдельный язык основанный на C и стремящийся в рамках подмножества C++, пересекающегося с C, быть совместимым. Но совместим он не поллностью.

Выкрасить и выбросить. Есть соответствующий стандарт на обоих.

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

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Kirill Frolov! You wrote in conference fido7.ru.embedded to Tolik Rozanov on Sun, 18 Jun

2006 09:06:11 +0000 (UTC):

KF>>>> Hа C программно то же самое реализуется примерно на в 5 раз болеe KF>>>> быстром CPU. GS>>> А это может оказаться очень серьёзной проблемой: >> Это проблема того же свойства, что и плач по RS-232C, что и ноутбук с >> мусорника. В точности.

KF> Ни разу. USB никак не альтернатива RS232 или RS485.

RS485 в бытовых и офисных компьютерах не применяется, а для RS232 как раз альтернатива. То, для чего раньше RS232 использовался как раз USB и закрыл.

GS>>> 1) Контроллеров с таким быстродействием не существовало. >> Сейчас-то они слава Богу есть?

KF> И сейчас нет. И никогда не будет. Всегда найдутся заадчи, где цпу KF> хватать не будет.

И очень редко эти задачи решаются программированием на ассемблере (во всяком случае чего-то бОльшего, чем небольшой критической части).

GS>>> 2) Они бы садили батарейки в несколько раз быстрее

KF> Ты сделал лучше? Я понимаю, очевидно, что таже на той элементной

А надо было? Вся эта АОНовская история - совковая до мозга костей. Начиная от нештатного использования оборудования АТС и кончая совершенно безумным дизайном этих поделок. Как внешним, так и внутренним.

KF> А телефонные компании имеют своих абонентов путём навязывания доп. KF> услуг.

А почему они их должны бесплатно оказывать?

dima

formatting link

Hi Vladimir,

Thu Jun 15 2006 06:43, Vladimir Vassilevsky wrote to Michael Zaichenko: MZ>> Это в какой системе такой изврат?

VV> Штатный файл от VDSP. Его пытались сделать универсальным на все случаи VV> жизни. И стартап там такой же веселый по той же причине. Странно. Для огромных проектов (тысячи модулей) на вижал прологе, скрипт выпоняющй построение был вполне осмысленный. А правила, но основе которых генерился скрипт ваще 5 строк на все. И неплохо работало...

WBR, Michael.

Hello Andrey.

Sun Jun 18 2006 11:23, Andrey Arnold wrote to me:

AA>>> relcom.ляляля.crosstools или как-то так тогда она называлась, DT>> Да нет, в фидо просто RU.CROSSTOOLS. :)

AA> Да? AA> А разве RU.* тогда (1994) уже было?

Видимо, да. :) По крайней мере она у меня в списке эх именно RU.CROSSTOOLS, а никто, конечно, её не переименовывал.

AA> Что-то не помню таких, одни только SU.*

Hу, я тоже не особо помню, когда что появилось... первые "большие" эхи действительно были SU.x, а потом появились ещё и RU.x

Dimmy.

Hi George,

Thu Jun 15 2006 10:58, George Shepelev wrote to Michael Zaichenko:

MZ>> А как узнать какое конкретно устройство в большой и сложной системе MZ>> неисправно?

GS> В большой и сложной системе каждое конкретное устройство должно уметь GS> проводить самодиагностику. Hа каком зажёгся красный светодиодик (или GS> перестал мигать зелёный) - то и менять ;) Hе всегда так просто. Как пример - с завода начали жаловаться на тензоплатформу. Глючит мол, левый вес кажет. Прозвонили кабель, решили что надо тензобалки менять. 4 штуки - дорого. Приезжаем мы, благо рядом. Оказывается крыса сожрала кабель тензобалки, но не до конца...

MZ>>>> что сразу переводит разработку в другой класс. GS>>> Проверено братьями-китайцами. MZ>> Причем тут китайцы? GS> Именно у них самые большие тиражи по всякого рода гаджетам... У них контрактное производство.

GS>>> Hаиболее эффективна не "покомандная" оптимизация, а разработка GS>>> алгоритма с учётом особенностей архитектуры, системы команд, GS>>> объёма памяти и т.п. нюансов. MZ>> И после смены камня идущая на помойку.

GS> А зачем "менять камень"? Из вредности? Затем что его сняли с производства. Затем что до снятия он стоил дороже чем нижний АРМ. И на кой хрен мне сдался 51ый, глючный, с безумным ценником, не имеющий примой замены, да еще и трудно добываемый? При этом еще захотели фирмварь поравить.

Дешевле написать на си с нуля, и развести новую плату. Ты там че говорил - если экономить по 1 бакс с контроллера... А я экономлю в результате по 15 баксов с контролллера :)

WBR, Michael.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required