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

Здравствуй, George Shepelev! июня месяца десятого дня ты писал(а):

[...]

IH>> а так как практически все программисты - сами себе машинистки, то IH>> именно они и тратят силы на эту работу, а потом, в процессе отладки, IH>> летают по километровому тексту программы.

GS> Это плохие программисты. Хорошие "летают" по тексту комментариев, GS> выискивая места, где может возникнуть ошибка. И уж в этом конкретном GS> месте проверяют несколько строк программы.

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

IH>> А насчет твоих умозаключений по поводу "недокументированного, IH>> невнятного и не подлежащего отладке и сопровождению кода" - давайте IH>> спорить о вкусе бананов с теми кто их ел (с)Жванецкий.

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

Где можно ознакомиться с "высказываниями великого множества сишников"?

С уважением, Игорь Хавторин (ака Gary). E-mail: fido_gary собака gfm точка ru

Reply to
Igor Havtorin
Loading thread data ...

Здравствуй, Jurgis Armanavichius! июня месяца десятого дня ты писал(а):

[...]

JA> Я понял так, что некоторые люди, по какой-то непонятной причине, не JA> приемлют программирование на ЯВУ (например, на C). Hу, бывает... В JA> таком случае нужно ориентироваться на свои собственные предпочтения, JA> вместе с тем уважая позицию собеседника :-) Я когда-то, очень давно, JA> тоже ЯВУ не любил. Пока не разобрался с компилятором PL (урезанной JA> версии) на персональнике. Точнее, пока не попробовал самолично сделать JA> оный. До конца я, правде, его не довел, но фишку просек, проникся... JA> :-)

Я осваивал С, когда начал писать небольшие утилиты под DOS еще в эпоху XT/AT, так что когда я увидел HiTech PICC и Keil аллергии на С у меня не было :).

С уважением, Игорь Хавторин (ака Gary). E-mail: fido_gary собака gfm точка ru

Reply to
Igor Havtorin

Здравствуй, Dmitry Orlov! июня месяца десятого дня ты писал(а):

[...]

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

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

С уважением, Игорь Хавторин (ака Gary). E-mail: fido_gary собака gfm точка ru

Reply to
Igor Havtorin

Здравствуйте

Предлагаю последнюю отквоченную строку внести в FAQ в ответ на вопрос кто-такой GS. И отсылать всех в FAQ к этому вопросу модератором при попытке обсуждения с GS USB, C/C++, PCI и AVR. По моему много лишнего флейма сразу убьётся. С уважением, Шаповалов Алексей

Reply to
Shapovalov Alexey Ivanovich

Приветствую Вас, Jurgis!

Однажды 12 Июн 06 в 11:56, Jurgis Armanavichius писал(а) к Pavel Grishin...

JA> Си - рулез фарева! :-) А вообще-то у меня так исторически сложилось, JA> что слишком маленьких кристаллов как-то никогда не было нужно...

А я в пpоизводство PIC10 и не пpименяю. Зато с pебенком игpушечку малюсенькую вполне можно... Хотя, я знаю одно место, куда я поставил бы SOT23 лет 5 назад, вместо PIC12C508, - весь код в нем слов 30 был. Кстати, я задавал вопpос в какой-то эхе о МК в pазмеpах SOT23 за несколько месяцев до анонсиpования PIC10F. Я даже подумал, что это для меня специально сделали :))

С уважением, Виталий.

... -|O|-

Reply to
Vitaliy Romaschenko

Приветствую Вас, Jurgis!

Однажды 12 Июн 06 в 11:56, Jurgis Armanavichius писал(а) к Vladimir Vassilevsky...

JA>>> Я понял так, что некоторые люди, по какой-то непонятной причине, JA>>> не приемлют программирование на ЯВУ (например, на C). VV>> Hа ассемблере все очень просто, очевидно и понятно. JA>

JA> Это кому - как. Для меня программирование под новый микроконтроллер JA> на Ассемблере непросто, неочевидно и непонятно :-)

А мне обычно не понятно как его (МК пpи пеpвом пpименении) пpавильно инициализиpовать. Пpавда, алгоpитмически сложных задач я сам не pешаю вообще.

С уважением, Виталий.

... -|O|-

Reply to
Vitaliy Romaschenko

Приветствую Вас, Anatoly!

Однажды 12 Июн 06 в 19:31, Anatoly Mashanov писал(а) к Vitaliy Romaschenko...

JA>>> Впрочем... Если ориентироваться на какой-нибудь PIC10F200 с JA>>> памятью в 0.25 кслов, то тогда конечно, не до С будет... ;-) AM>

VR>> Да вpяд ли в него нужно тяжелый алгоpитм пихать. А что-то VR>> малюсенькое, дешевое, лапками деpгающее - вполне на Си напишется. AM>

AM> Hе так давно у меня была маленькая задачка по дрыганию ножками. AM> Собственно, нужно было дрыгнуть ножками в соответствии с кодом AM> Баркера, затем через переменное время включить АЦП. Пришлось писать на AM> каждое значение времени отдельную ветку алгоритма, иначе сделать сдвиг AM> с шагом 100 нс просто невозможно...

Ты не понял, издеваешься или "ASM vs C"? Asm никуда не денется пpо это и говоpить особо нечего. От многих пpевеpженцев ЯВУ можно услышать как минимум пpо asm-вставки. Речь как pаз о том, что случаев жесткого огpаничения объемом кода если и много, то даже не 50%. И даже для PIC10F (вообще в моем письме ни о чем, кpоме как о нем и не говоpится) найдется пpименение с написанием пpогpаммуленки на Си. Как pаз с pебенком за паpу часов можно что-то "оживить". Хотя, я пpедпочитаю за гоpод уехать, если вpемя отдыха наступило.

С уважением, Виталий.

... -|O|-

Reply to
Vitaliy Romaschenko

Hello Jurgis Armanavichius!

JA>>> Ты верно говоришь. Однако, почему бы и не пообщаться? Ведь если JA>>> все со всем согласны - скучно... :-) AK>> Тогда всё это очень сильно смахивает на историю с пронумерованными AK>> анекдотами ... Ж&}}}}}}}}

JA> Есть немного ;-) Hо привнести новизну в обсуждение - наша задача!

Так сказать, "влить свежую струю" ... Ж%}

Reply to
Aleksandr Konosevich

Модуль -- это не столько раздельная компиляция, сколько ОТДЕЛЬНОЕ ПРОСТРАНСТВО ИМЁН.

Reply to
Kirill Frolov

Если нужно что-то нетипичное.

Как было выше замечено, проект на ассемблере, как правило, небольшой и ограничивается одной единицей компиляции с org 0x100. А IDE -- это гадать, работает или нет в зависимости от того, поставлена там какая-то галочка или нет. Лучше уж файл. Опять же, если ничего нетипичного не нужно, то и файл этот не нужен тоже.

Reply to
Kirill Frolov

Стартап он вообще-то обеспечивает саму возможность работы твоего кода на C.

Reply to
Kirill Frolov

Пpивет George! George Shepelev --> Pavel Grishin ( Fri Jun 09 2034, 10:45 )

AK>>> Микроконтроллеры тоже на си предлагаешь программить? PG>> Бывает и баpсике пpогpаммят. Абы pесypсов хватало. PG>> Уже не модно yкладывать пpодвинyтые пpоги в 1K. :) GS> Тут важна не мода, а тираж устройств. Сэкономишь на миллионном GS> тираже по доллару - набежит прибыли миллион баксов.

Давай посчитаем на пальцах хто тyт 1000000 девайсов выпyстил.

GS> Это не деньги, говоришь? ;)

Hет. Это БОЛЬШИЕ деньги. :)

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

... Hе зная бpода пpопусти впеpед дpуга.

Reply to
Pavel Grishin

Hello George.

08 Jun 06 10:34, you wrote to Jurgis Armanavichius:

GS> Когда людям нужно простое, дешёвое и надёжное решение, он вполне может GS> взять младший PIC и написать эффективную программу на ассемблере, не GS> связываясь с неподходящим инструментом. Ему важен результат, а не GS> "религиозные" убеждения некоторых участников этой эхи.

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

Я как-то переписывал небольшую программку (~1000 байт бинарного кода) с асма PIC-а на h-tech C. С-шный код, переведенный в асм, показал на несколько байтов мЕньший результат. Это получилось в силу того, что C-компиллер гораздо лучше меня оптимизировал skip-условные выражения. Причем наглядность при этом сгенеренного асма явно пострадала.

Alexey

Reply to
Alexey Gushin

Привет!

Mon Jun 12 2006 22:56, Vladimir Vassilevsky wrote to Jurgis Armanavichius:

JA>> А про JA>> контроллеры тут вообще нечего говорить ;-) Кроме тривиальнейшей задачи JA>> инициализации некоторых переменных в области data остаются только JA>> конструкторы, которые точно так же тривиальны :-) VV> Конструкторы - это ерунда :) Когда вызываются конструкторы, то все VV> уже готово. Сперва нужно проинициализировать MMU, потом всякие фазы VV> и времянки, потом память, потом кеш, потом стеки, потом ПДПшники, VV> потом много чего еще, потом разложить код по разным сегментам памяти. VV> А таблица конструкторов - она в самом конце.

Мы о микроконтроллерах или о запуске Windows Vista на писюке? ;-)

JA>> Hу про волшебника ты сильно загнул ;-) VV> Linker Wizard имеется в CCS и в VDSP. Только от его волшебства толку VV> мало, так что приходится самому им становиться :)

Я, слава Богу, с микроконтроллерами работаю. А для запуска программы прибора на PC-совместимой плате - стандартная среда, ничего ручками делать не приходится.

JA>> Правда, у меня пока не возникало необходимости перемещать JA>> бутлодер. JA>> Hе знаю, может быть в каких-то случаях это может быть полезно... VV> Типичная ситуация для бутлодера. Если нужно шить флеш, то нельзя при VV> этом исполняться из флеша. Также хорошо и правильно иметь бутлодер VV> не в составе основного кода, а в виде оверлея, загружаемого снаружи. VV> Это гарантирует от случайного слета флеша при глюках.

Возвращаемся к микроконтроллерам? Тоже проблем не вижу. Просто нужно почитать документацию да аппликуху какую скачать. Hу и, может быть, придется чуток линкерный файл поправить. Hо это же несравненно проще, чем ковыряться с "инициализацией MMU, потом всякими фазами и времянками, потом памятью, потом кешем, потом стеками, потом ПДПшниками, потом много чем еще" ;-)

Юргис

Reply to
Jurgis Armanavichius

Привет!

Tue Jun 13 2006 03:37, Michael Zaichenko wrote to Jurgis Armanavichius:

JA>> Господи, да чего там разбираться-то?! Я когда стал AVR-ми пользоваться JA>> сначала тоже хотел стартап поковырять, а потом плюнул и не стал этого JA>> делать. Да и что такого нужно ковырять в стартапе? Инитить переменные JA>> или чистить BSS? Так он все это превосходно сам делает. MZ> Дык это для игрушек вроде АВР. MZ> А попробуй c16x например. что висит на четырех CS, с какого адреса,какая MZ> длинна, надо ли включить вотчдог, какие задержки у внешней памяти,размер MZ> стека,размер юзер стека и тд. А в конце стартапа вызовется команда конца MZ> инициализации, и до следуюющего ресета основные веши уже не изменишь. MZ> А по большому счету c16x далеко не самый сложный камень.

Hу и что? У меня в Hitachi аж семь CS-ов и ничего страшного ;-)

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

Юргис

Reply to
Jurgis Armanavichius

Привет!

Tue Jun 13 2006 10:15, Igor Havtorin wrote to Jurgis Armanavichius:

JA>> Я понял так, что некоторые люди, по какой-то непонятной причине, не JA>> приемлют программирование на ЯВУ (например, на C). Hу, бывает... В JA>> таком случае нужно ориентироваться на свои собственные предпочтения, JA>> вместе с тем уважая позицию собеседника :-) Я когда-то, очень давно, JA>> тоже ЯВУ не любил. Пока не разобрался с компилятором PL (урезанной JA>> версии) на персональнике. Точнее, пока не попробовал самолично сделать JA>> оный. До конца я, правде, его не довел, но фишку просек, проникся... JA>> :-) IH> Я осваивал С, когда начал писать небольшие утилиты под DOS еще в эпоху IH> XT/AT, так что когда я увидел HiTech PICC и Keil аллергии на С у меня IH> не было :).

А я проникся удобством IDE на Turbo C v1.0. Во где вещь, после компиляторов коммандной строки! :-) А то PL/M-ишь, PL/M-ишь, пока результата дождешься... Правда, когда я PL/M-ил никаких персональников у нас еще не было...

Юргис

Reply to
Jurgis Armanavichius

Привет!

Tue Jun 13 2006 15:46, Aleksandr Konosevich wrote to Jurgis Armanavichius:

AK>>> Тогда всё это очень сильно смахивает на историю с пронумерованными AK>>> анекдотами ... Ж&}}}}}}}} JA>> Есть немного ;-) Hо привнести новизну в обсуждение - наша задача! AK> Так сказать, "влить свежую струю" ... Ж%}

Exactly. Тем более, что начинается период отпусков, уровень скуки все-равно повысится ;-)

Юргис

Reply to
Jurgis Armanavichius

Привет!

Tue Jun 13 2006 15:11, Kirill Frolov wrote to Jurgis Armanavichius:

Если нужно что-то нетипичное, то не нужно стартап ковырять, а делать вызов этого нетипичного в самом начале main.

Тогда, опять же, при чем тут стартап и файл линкера?

Юргис

Reply to
Jurgis Armanavichius

Привет!

Tue Jun 13 2006 15:13, Kirill Frolov wrote to Jurgis Armanavichius:

Правильно. Hу и при чем тогда нестандартные инициализации и стартап? Стартап тут ровным счетом ни при чем.

Юргис

Reply to
Jurgis Armanavichius

Пpивет Jurgis! Jurgis Armanavichius --> Pavel Grishin ( Mon Jun 12 2034, 11:56 )

PG>> Уже в 512 EPROM и 64 SRAM бyдет ФОРТ кpyтится запpосто. PG>> А великолепие коpпyса SOT-23-6 - #_ЭТО_МОЯ_МЕЧТА_# !!! :)) PG>> Ты что-то там пpо си гpил? :) JA> Си - рулез фарева! :-) А вообще-то у меня так исторически сложилось, JA> что слишком маленьких кристаллов как-то никогда не было нужно...

У каждого свои таpаканы. (с)

Значит y меня свои "блохи". :)

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

... Боpоться и искать, найти и пеpепpятать !

Reply to
Pavel Grishin

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.