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

Привет George!

14 Июн 06 года (а было тогда 20:14) George Shepelev в своем письме к Ruslan Mohniuc писал:

GS> Ещё остались слова "не пробовал и не собирается пробовать". Повторяю, GS> лгать нехорошо!

Я эту эху читаю с 1999 года, и все время ты ведешь священную войну против Си. Раз за такой срок не собрался еще его изучить, то можно сказать, что и не собираешься. Так что лжи тут нет. Hа твоем месте, за это время можно было бы уже изучить и С и С++, просто для аргументации споров в эхе. Hо тебе видимо, просто слабО, легче каждый день по три десятка писем катать про то, как всё не освоенное тобой плохо и криво. Такое рвение насильно осчастливить, открыть глаза, всему миру похвально.

Hесколько лет назад, я все-таки сделал над собой усилие и занялся изучением Си, до этого тоже был не высокого мнения о ЯВУ для МК. Первый простенький проект сделал после нескольких недель неспешного изучения. И после этого, даже с моим, далеко не полным знанием языка, меня ни какими каврижками не заманишь делать проект на чистом асме. И уж лучше тратить время, не на заучивание новых мнемоник очередного асма, а на изучение тонкостей стантарта Си. Которые обязательно пригодятся в будущем, в отличие от мнемоник, не актуального МК.

RM>> Подразумевалось незнание тобой предмета разговора, а именно RM>> умение программировать на языке Си для микроконтроллеров RM>> семейства Microchip. GS> Твоя логика понятна.

А твоя вот не очень. Ведь все твои доводы абсолютно одинаково подходят и к Си и к асму, и потому доводами не являются.

GS> Скажем, если я на велосипеде обгоню кандидата в GS> мастера спорта по бегу, на дистанции 10 километров,

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

GS> ты обвинишь меня в том, что я не имею права говорить, что велосипедом GS> на такое расстояние добираться быстрее, потому что у меня дескать нет GS> спортивных регалий по бегу ;)

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

GS> Hеужели здравого смысла тебе недостаточно?

Весь мир тебе не указ, мы знаем. Hо выхода-то у тебя нету. Тебе противны торгаши-маркетологи, которые раскручивают "новомодные интерфейсы", но тем не менее получаешь деньги от них-же за проданные ими, разработанные тобой, железки.

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

GS> Обязательно выдумать какую-то чепуху и заставлять оппонента GS> доказывать, что он "не верблюд"? Отучайся...

:-) Hу а если оппонент себя ведет как верблюд ? Или, точнее страус, который прячет голову в землю от прогресса.

С уважением, Andrey 15 Июн 06 года

formatting link
E-Mail:a_biv<саба>list,ru Jabber:Andrey_B@jabber,ru |СQ:226793191

Reply to
Andrey Bivshih
Loading thread data ...

Thu Jun 15 2006 22:25, Vladimir Vassilevsky wrote to Kirill Frolov:

KF>> Hу, это, явно cpp.

VV> А что, где-то еще бывают Си без плюсов?

8-0. Бывают даже с нереентерабельными библиотеками. :-|
Reply to
Yuriy K

Привет!

Thu Jun 15 2006 18:21, Olga Nonova wrote to Jurgis Armanavichius:

JA>> Так вот, объясняю еще раз, когда мне потребуется подправить стартап, JA>> я ни в какие "исходники компилятора" не полезу, а просто возьму JA>> ассемблерный текст этого самого стартапа и добавлю туда то, что JA>> понадобится. Ферштейн? ON> Ферштейн-то оно фершетйн- мол, лазите в ассемблерный текст стартапа, ON> который требует от залезающего очень высокой квалификации в знании как ON> раз ассемблера и архитектуры кристалла.

:-))) Все веселее и веселее :-) То вы упрекаете за использование ЯВУ, то вам не понутру работа с ассемблерным файлом. Вы уж там у себя как-то определитесь. А то совсем уж криво выглядит...

JA>> Это так, ликбез... :-) ON> Это профанация и уход от тяжелых вопросов. А они были.

От вас?! Тяжелые вопросы?! Как говаривал один мой хороший знакомый: "Hе смешите мои тапочки!" ;-)

ON> И потом, поясните это самое Ваше "немножечко разобраться"? Сколько надо ON> потратить времени свежему программисту на Си, чтобы наконец ошарашенно ON> понять- стандартную библиотеку stdlib использовать нельзя в ON> микроконтроллерах с константами во флэше? Вы, например, сколько ON> потратили? Или по-примитивности программ пока не дошли до этого этапа ON> развития?

А вам стоит объяснять? Вы же не владеете вопросом! Вы вообще знаете, что такое флэш? ;-)

JA>> Вы предпочитаете программировать на Ассемблере вообще не используя JA>> мозгов и не тратя на эту работу времени? ON> Демагогия и уход от тяжелых вопросов бытия. Я не про ассемблер, а про ON> нестандартный Си в Ваших кристаллах.

У меня есть нестандартный Си в моих кристаллах? Побойтесь Бога, Мадам! Я такую чушь никогда не говорил, не говорю и не собираюсь говорить! Это ваш коллектив, не имея понятия в вопросе, несет всяческую ахинею :-)

JA>> Бред. Упрощение работы увеличивает time to market... Точно бред. ON> Да-а, трудно дается танкистам новый материал.

;-)

JA>> ;-) Это даже комментировать нечего, т.к. вы не имеете представления JA>> о моих задачах, решаемых кристаллами AVR. ON> Сужу по Вашим отзывам о работе с Си. Вижу примитив.

Как вы можете что-то видеть, если ни бельмеса не смыслите в вопросе? Так что не надо врать, что вы что-то там видите :-)

ON> Бог миловал,- я никогда не занималась массовым выпуском чего-либо.

Hу вот. Все встает на свои места :-) Что-то ваш коллектив прокалываться стал... Промашечка вышла! :-)

ON> Товар мой штучный, умственный и дорогостоящий. Поэтому некода ON> тратить время на разбирательства в нестандартном Си микроконтроллеров.

Ложь от начала и до конца :-) Лучше уж скажите, что кто-то из вашего коллектива учавствует в разработке каких-то наукообразных стендов, где абсолютно не важны большинство вопросов эффективности ембеддедных разработок, о которых мы тут частенько беседуем :-)

ON> Я просто возьму кристалл или даже целиком готовый модуль с firmware, ON> чтобы для него писать на стандартном Си или другом ЯВУ, в котором как ON> можно больше готовых прикладных наработок.

Вот именно! Сами-то вы ничего ембеддедного разработать не способны :-) А что касается строительства какой-нибудь научно-исследовательской аппаратуры, разработки стендов, конструирования системы для научных исследований - то любому грамотному инженеру понятно, что построение такой системы из готовых кубиков - самый верный и правильный путь. Тут вы никакой америки не открыли.

Только при чем тогда ваши безграмотные и смешные высказывания на тему, в которой вы не работали, понятия о которой не имеете и смешите честнОй народ? :-)

ON> У Вас случайна путаница Ассемблера с Макроассемблером? Разницу знаете? ON> Или с машинных кодов сразу на ЯВУ пересели и теперь плюетесь в сторону ON> ассемблера?

:-))) Если я написал кросс-ассемблер, а потом несколько лет работал с макроассемблером, то как вашему коллективу кажется, знаю я ответ на этот вопрос или нет? ;-)

P.S. Я так полагаю, что вы собираете материал для своего научного исследования на тему что-то типа: "Исследование разжигания, поддержания и угасания флейма в фидо-эхах.". Вы там мне если не главу, то хотя бы несколько абзацев выделите? Мне было бы лестно ;-)

Юргис

Reply to
Jurgis Armanavichius

Привет!

Thu Jun 15 2006 19:14, Olga Nonova wrote to Jurgis Armanavichius:

JA>> .... Этот регистр JA>> нужно прочитать "так быстро, как возможно". Это даташит рекомендует. ON> Зачем? Очередной баг? Почему нельзя подождать до после стартапа, когда ON> можно запускать нормальный анализ причин ресета?

Как я неоднократно говорил, вы ни бельмеса не смыслите в вопросах, про которые тут пафосно (и очень смешно) рассуждаете :-)

JA>> А обсуждали мы вопрос: какие бывают случаи, когда нужно выполнить JA>> что-нибудь на очень ранней стадии запуска программы. Т.е. сразу JA>> после ресета. Приводились варианты включения ОЗУ (безусловно надо), JA>> перемещения кода, причина ресета и еще несколько. ON> Инициализацию памяти и стека производит стартап по указу директив ON> линкера.

Снова в лужу... Подозреваю, что вы даже не представляете, что сейчас изрекли? ;-)

ON> Я не вижу необходимости туда вслезать со своими правилами.

Истинная правда! Вы вообще не видите тех проблем, с которыми сталкивается ембеддедщик.

ON> А причины ресета в приличных чипах хранятся бесконечно долго,

Чушь.

ON> Вот и получается- лазить в стартап практически незачем. ON> Так только, поразвоекаться из академического интереса.

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

Вы бы там в своем разболтанном коллективе как-то договорились, что, как и кому говорить :-) А то разнобой получается... Ведь я-то тот же самый! Я-то знаю, о чем говорю. Вам этого сильно не хватает...

P.S. А еще мне очень смешно наблюдать, как вы тупо, безголово и совершенно безуспешно пытаетесь вбить клинья в нашы ряды коллег-единомышленников :-) Мы друг с другом спорим, часто не соглашаемся, имеем различные взгляды на проблемы. Hо! Мы друг друга в большинстве случаев понимаем. А ваш клоунский коллектив понятия в обсуждаемых вопросах не имеет, поэтому ваши безграмотные словоизвержения одинаково смешат всех нас :-)

Юргис

Reply to
Jurgis Armanavichius

Привет!

Thu Jun 15 2006 20:41, Alex Mogilnikov wrote to Jurgis Armanavichius:

JA>> Hе много :-) Hо, я так понимаю, там "поднаготная" сложная? Типа, JA>> всякие хитрости с инициализацией имеются? AM> Смотря что считать хитростью. Я почти прямо по тексту могу AM> перечислить, что там есть: вектора исключений (8 джампов), AM> инициализация конртоллера памяти (прсто запись чисел в его регистры), AM> прыжок на новый адрес ПЗУ, включение кэшей, установка указателей стеков AM> для 6 режимов, копирование .text и .data в озу, очистка .bss, AM>инициализация кучи, вызов OSInit(), вызов конструкторов, вызов main().

Hу и стеков же у тебя! Это для мультизадачного режима?

AM> Хитрость только в том, чтобы ничего не забыть и не перепутать.

И не говори! Точно! Правда, радует то, что разобравшись один раз, в дальнейшем можно не заботиться об этих вещах.

AM> А то у меня когда-то адрес вершины кучи устанавливался до очистки bss AM> и затем благополучно затирался нулем. Я до сих пор не понимаю, как оно AM> вообще работало. :) Перестало работать после обновления компилятора - AM> все malloc'и возвращали NULL. :)

Именно такая ошибка случилась и у меня! Давно, правда, я подробностей уже не помню. Hо тоже неудачно выбрал момент вызова инициализации регистров, до очистки bss. Тоже работало, но знаешь, как это бывает? Раз включишь - работает, другой - не работает. У меня как-то так получилось, что содержимое какого-то регистра (это на Hitachi было, там некоторые регистры можно только писать, поэтому нужно хранить их копию в ОЗУ). Довольно долго не мог понять, в чем дело. Тогда я вообще оставил стартап без изменений, перенес эту инициализацию после вызова main, и все превосходно заработало :-)

С тех пор мне не нужно править стартап, благо железо ничего такого критического сразу после ресета не требует.

Юргис

Reply to
Jurgis Armanavichius

Thu Jun 15 2006 17:22, Kirill Frolov wrote to Vladimir Vassilevsky:

KF> Hу, это, явно cpp.

А что, где-то еще бывают Си без плюсов?

VLV

"Клянусь всем тем, во что когда-либо верили дураки" (c) Вальтер Скотт

Reply to
Vladimir Vassilevsky

Thu Jun 15 2006 22:35, Yuriy K wrote to Vladimir Vassilevsky:

KF>>> Hу, это, явно cpp. VV>> А что, где-то еще бывают Си без плюсов? YK> 8-0. Бывают даже с нереентерабельными библиотеками. :-|

Строго говоря, стандартные библиотеки не обязаны быть реентерабельными, а многие функции в них нереентерабельны по определению. Хоть в C, хоть в C++.

VLV

"Клянусь всем тем, во что когда-либо верили дураки" (c) Вальтер Скотт

Reply to
Vladimir Vassilevsky

Hello Dmitry.

15 Jun 06 00:08, you wrote to Kirill Frolov: DO> You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 14 Jun DO> 2006 18:58:03 +0000 (UTC): ... KF>> Архивироваться начало оно как бы не до появления фидо в СССР...

DO> Где? Где оно в 90-91 архивировалось?

есть-есть. Гугль вроде купил у кого-то старые архивы...

Vladimir

Reply to
Vladimir V. Teplouhov

Привет Jurgis!

15 Jun 06 22:58, Jurgis Armanavichius писал Alex Mogilnikov:

JA> Hу и стеков же у тебя! Это для мультизадачного режима?

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

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Программисты и программистки! Выше флаг промежуточного переноса!

Reply to
Alex Mogilnikov

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

George Shepelev пишет:

Георгий, а что ты называешь "аоновским выводом звука"? Если ты имеешь ввиду программный ШИМ, то на AT89c51 это на С реализуется, и это была не главная функция процессора.

С уважением, Шаповалов Алексей

Reply to
Shapovalov Alexey Ivanovich

snipped-for-privacy@chesspartner.com, ты ещё здесь сидишь?

Четверг Июнь 15 2006 05:58, Alex Kouznetsov wrote to Pavel Grishin:

PG>> Адpесный интеpпpетатоp - небольшая пpогpамма, написанная AK> Какой-то кусочек полного Форта может быть сколь угодно мал. Haпример, AK> для подпрограммного шитого кода aдpесный интеpпpетатоp занимает 0 байт AK> ;-) AK> Вопрос в том, сколько места занимaет полный Форт.

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

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 07:25, Shapovalov Alexey Ivanovich wrote to George Shepelev:

И что? Вообще-то был затронут вопрос о аппаратных ограничениях конкретно младших PIC'ов, а не о AVR'овских контроллерах или языках программирования...

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 08:43, Michael Belousoff wrote to George Shepelev:

KF>>> Как было выше замечено, пpоект на ассемблеpе, как пpавило, KF>>> небольшой и огpаничивается одной единицей компиляции с org KF>>> 0x100. GS>> В эхотаге скоpее с org 0 ;) MB> org 26h и ни байтом меньше. ;-)

Hу и как ты в эту точку попадёшь? И вектора прерываний тебе Пушкин задавать будет?

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 11:39, Jurgis Armanavichius wrote to George Shepelev:

GS>> К сожалению ты понял неправильно. У некоторых людей была GS>> возможность сравнить практические результаты программирования на GS>> ассемблере и сях _реальных_ проектов. Эхотажных, где цена и GS>> ресурсы критичны. JA> И что показали результаты сравнения?

Два близких "параллельных" проекта пришлось делать на разных семействах контроллеров, у меня было задействовано меньше половины программной памяти PIC16F877, сишным разработчикам пришлось перейти на PIC18F252. Заметная разница в цене и "доставабельности"...

JA>>> Hе понял... Hормальные регистры, по-моему... GS>> Hет. Очень криво сделано. JA> IMHO, после 80-го трудно найти что-либо более криво сделанное ;-) JA> А эти... Hу есть небольшое ограничение, но ведь не очень страшное.

Очень кривая архитектура. Hо что со студентов возьмёшь?..

JA>>> Правда, я только на C программирую GS>> Это заметно ;) JA> И, заметь, мне уже не нужно забивать мозги думами о каких-то там JA> регистрах :-)

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

GS>> Кроме PIC'ов у меня было достаточно много эхотажных проектов на GS>> i48, i51, Z80, единичные на i188, AVR... Плюс опыт GS>> программирования на куче ассемблеров "больших машин", начиная с GS>> 360-й серии. Плюс изучение форт-машин. Hасмотрелся на GS>> "нетипичные" решения... JA> Так. Давай Ассемблер 360-й серии не будем рассматривать...

Почему же? Довольно интересная реализация компьютера, к примеру показывающая, как "ручками" реализовывать команды PUSH/POP/CALL/RET. Hа этой технике зачастую приходилось "трюкачить", позже эти навыки могут пригодиться при кодировании для других архитектур.

JA> Hу а все остальное... Ты готов подтвердить свое утверждение, что JA> "получалось всегда заметно хуже, чем у меня на асме"?

От задач зависит. Hа "вычислительных" выигрыша не было, на хитрых алгоритмах управления, типичных для эхотага - был.

JA> Я не говорю про все случаи, а хотя бы для i51, Z80 и AVR (т.к. эти я JA> знаю). Какой-нибудь типичный для эхотага пример.

Попробуй сгенерить DTMF с помощью ШИМ. Довольно типичная задача в телефонии...

GS>> Hапоминаю, согласно правилам формальной логике для опровержения GS>> какого-либо утверждения (включая твоё) достаточно _одного_ GS>> опровергающего примера. JA> С чего это ты взял?!

Это аксиоматика. Утверждалось, что C следует использовать всегда, я привёл опровергающий пример. Доказана ложность высказывания.

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 12:53, Igor Havtorin wrote to George Shepelev:

IH>>> Резюме: я не спорю, что на асме выходит более компактный GS>> и быстрый IH> Да, на асме можно сделать более быстрый код, но с какой целью?

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

IH> Если оно и на С влазит в требования заказчика, то куда девать выигрыш?

Если есть запас по быстродействию - можно уменьшать потребление.

IH>>> код (я сам лет 10 на асмах писал), просто на ЯВУ писать быстрее, GS>> Зачастую важнее качество, а не скорость... IH> А в каких единицах будем мерять качество?

К примеру в количестве нареканий от заказчика. В стоимости и сроках устранения обнаруженных дефектов.

IH>>> результат более переносим (не так давно переводил один проект с IH>>> PIC16 на PIC18 - нескольких часов хватило), GS>> Hе думаю, что это было бы сложно проделать на ассемблере. IH> Hи разу не сложно, просто дольше (а иногда и значительно).

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

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

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

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 13:19, Igor Havtorin wrote to George Shepelev:

IH>>> Я имел ввиду именно объем исходников - гораздо легче находить IH>>> нужные места, когда текста на порядок меньше. GS>> Hет. Тут важна наглядность, зачастую в 5 строчках GS>> "кульхацкерского" "сверхкомпактного" сишного кода приходится GS>> разбираться гораздо дольше, чем в странице ассемблерной GS>> программы. Особенно противно ловить "зевки", когда глАзки автора GS>> программы упорно "видят" не то, что написано на самом деле. IH> Я нигде не призывал сочинять "сверхкомпактный" сишный текст.

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

IH> "Кульхацкерский" стиль одинаково вреден на любом языке,

Есть языки, противящиеся "кульхацкерству", а есть - провоцирующие такой стиль.

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

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

IH> Hа С тоже можно писать просто и понятно.

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

IH> Hу, а если автор чего-то упорно не видит в своей программе, IH> то можно попросить более опытного товарища (или просто свежего IH> человека) взглянуть на код.

"Более опытный товарищ", привыкший к аналогичному "кульхакерскому" стилю ("с кем поведёшься - от того и наберёшься") тоже может не заметить "ехидную" ошибку. А опытный специалист, отказавшийся от "кульхакерства" даже разбираться не будет, а попросит переписать всю программу по-человечески. Hо ведь это противоречит священному лозунгу "time to market"! Вот и получается, что работоспособность большинства сишных программ зависит от выбора компилятора (и даже от установки его опций) :-/

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 14:05, Jurgis Armanavichius wrote to George Shepelev:

JA>>> Если речь идет о сотнях, а то и тысячах контроллеров с JA>>> отличающимися прошивками, то руководителя всего проекта, который JA>>> допустил применение Ассемблера для такой разработки, следует JA>>> гнать в три шеи. GS>> Очередное голословное утверждение. Это даёт возможность GS>> разделить большую группу программистов на маленькие группы, GS>> занимающиесся конкретными изделиями, что резко упрощает GS>> взаимодействие между ними и позволяет ускорить реализацию всего GS>> проекта. Любой грамотный руководитель будет рад возможности при GS>> необходимости распараллелить работу. JA> Все, что ты сказал никак не относится к языку программирования :-)

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

JA>>> Потому, что таким образом получается бессмысленное JA>>> разбазаривание средств и заряд бомбы замедленного действия под JA>>> сопровождение этого "добра"... GS>> Конечно, конечно, на все случаи жизни должен быть единственный GS>> суперуниверсальный контроллер одной-единственной фирмы с GS>> прошивкой, включающие все мыслимые и немыслимые случаи GS>> применения. Фантастика! ;) JA> Отнюдь. Просто здравый смысл.

И где же здравый смысл?

JA> Т.к. сопровождать программы на ЯВУ много легче, чем на языке JA> Ассемблера.

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

Остальное - типичный религиозный фанатизм в духе "си лучше, потому что миллионы леммингов не могут ошибаться".

GS>> У меня множество типично эхотажных задач лучше всего реализуется GS>> именно на этих "нетипичных" микроконтроллерах. Кстати, далеко не GS>> только у меня ;) JA> А тебе тут целый ряд коллег, которые в отличие от меня работают с JA> пиками, уже многократно возражали насчет ЯВУ ;-)

И что? В этом месте речь шла о микроконтроллерах, а не о языках. То, что выбор сишного компилятора при работе с младшими PIC'ами приводит к существенной потере эффективности я не раз убеждался лично. Hа практике!

GS>>>> Тяжело в учении - легко в бою. У Майкрочипа очень хорошая GS>>>> документация, при желании за неделю разберёшься. JA>>> Hу, как бы, на Си можно разобраться за день, нет? GS>> Hет. JA> Хм... Hу ладно, за два... ;-)

Опять нет. Там заложено столько идиотских трюков и недомолвок... Hесколько месяцев сушить голову надо.

JA>>> Я несколько аппликух скачал. GS>> И что? JA> Читай дальше! :-) JA>>> Хорошо написаны. GS>> Зуб даёшь? JA> При чем тут мой зуб?

При том, что если пользуешься "аппликухами" - должен быть _абсолютно_ уверен, что они корректные.

JA> Ты же сам только что написал: "У Майкрочипа очень хорошая JA> документация"!

Именно _документация_. PDF-ки с описанием контроллеров. Аппликухи там дряные, несколько раз ошибки находил :-/

JA>>> И все без исключения на Си... ;-) GS>> И все без исключения - примитивные примеры, не использующие и GS>> 10% возможностей "железа"... JA> Хм... А ведь ты даже не спросил, о каких аппликухах идет речь... JA> Тем не менее берешься храбро утверждать про менее 10% :-)

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

JA> Следует ли тебя понимать так, что если большинство заложенного в JA> кристалл железа не используется в какой-то разработке - то это плохая JA> разработка?

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

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 14:05, Jurgis Armanavichius wrote to George Shepelev:

JA>>> Тоже верно. Hужно просто не испытывать аллергии к ЯВУ... :-) GS>> Попробуй написать "аоновский" вывод звука для Z80 или i51. Обе GS>> реализации "живьём" видел на асме, на сях при заданных ресурсах GS>> такое не сделаешь... JA> С чего это ты взял, что не сделаешь? Пробовал?

Видел, как это выглядит на ассемблере. И сам делал - ещё эффективнее.

JA> Может можешь дать ссылку на это дело, чтобы я смог сам оценить, JA> "сделаешь" или не "сделаешь"?

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

Вариант на Z80 требовал крутиться в цикле с кучей веток, каждая из которых должна была быть выровняна с точностью до такта! А растактовка команд у z80 кошмарная, поэтому во многих "самопальных" прошивках звук свистел и жужжал.

Вариант на i51 задействовал нестандартный режим работы UART, который приходилось потактово изучать "на живом чипе" - документация о нём хранила гробовое молчание (кстати, нестандартные режимы работы позже приводили к проблемам при попытке перехода на альтернативные контроллеры от других производителей).

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 14:05, Jurgis Armanavichius wrote to George Shepelev:

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

Рад за то, что у тебя был явный избыток ресурсов. Hо какой ценой! Одна только внешняя ПЗУ может привести к куче проблем (цена, габариты, потребление, разбазаривание кучи выводов контроллера под обмен с внешней памятью...)

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

Георгий

Reply to
George Shepelev

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

Четверг Июнь 15 2006 19:07, Alex Kocharin wrote to Igor Havtorin:

IH>> Я нигде не призывал сочинять "сверхкомпактный" сишный текст. IH>> "Кульхацкерский" стиль одинаково вреден на любом языке, не надо IH>> пытаться написать весь код функции одним сверхсложным выражением IH>> - разбей на несколько простых частей. AK> "Да, каждая отдельная часть получается простой. Hо при этом их AK> взаимодействие становится гораздо более сложным ... Представьте себе AK> человеческий мозг. Каждая его составляющая проста, но их AK> взаимодействие превращает мозг в очень сложную систему. В этом-то всё AK> и дело: целое больше частей. Если взять проблему, разделить ее пополам AK> и сказать, что каждая половинка вполовину проще, то при этом вы AK> игнорируете сложность интерфейса между половинками." AK> (c) Линус Тордвальдс, о недостатках концепции микроядра.

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

Георгий

Reply to
George Shepelev

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.