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

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

Вторник Июнь 13 2006 14:11, Kirill Frolov wrote to Jurgis Armanavichius:

KF> Как было выше замечено, проект на ассемблере, как правило, небольшой KF> и ограничивается одной единицей компиляции с org 0x100.

В эхотаге скорее с org 0 ;)

Георгий

Reply to
George Shepelev
Loading thread data ...

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

Вторник Июнь 13 2006 15:19, Pavel Grishin wrote to George Shepelev:

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

"Хто тут" не скажу, а китайцы этим занимаются уже много лет ;)

GS>> Это не деньги, говоришь? ;) PG> Hет. Это БОЛЬШИЕ деньги. :)

То-то и оно! Китайцы вовремя сообразили где собака зарыта и "оседлали волну"...

Георгий

Reply to
George Shepelev

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

Вторник Июнь 13 2006 15:55, Alexey Gushin wrote to George Shepelev:

AG> Парадокс заключается в том, что на C можно написать код иногда AG> компактнее и эффективнее чем на асме.

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

AG> Понятно что теоретически асм всегда должен выигрывать.

Собственно, это неважно. Важно, что "сишной панацеи" не существует.

AG> Hо на практике, в силу того, что наглядность кода хуже,

Вот как раз наглядность _кода_ при использовании ассемблера лучше, попробуй отладкой программы на уровне кодов заняться ;)

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

Уровень си/асм - это уровень кодинга, а не уровень, на котором разрабатывают "ходюльнички". А качество кодинга приходит с практическим опытом, которого от споров в эхе, увы, не прибавляется...

Георгий

Reply to
George Shepelev

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

Вторник Июнь 13 2006 21:16, Jurgis Armanavichius wrote to Alex Mogilnikov:

JA>>> Если нужно что-то нетипичное, то не нужно стартап ковырять, а JA>>> делать вызов этого нетипичного в самом начале main. AM>> А если это нетипичное должно быть сделано до вызова AM>> конструкторов? JA> Hу, чтобы не быть голословным, ты, конечно, можешь привести пример JA> оной необходимости?

Можно я попробую? Обработка сброса по браунауту?

Георгий

Reply to
George Shepelev

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

Hello, Vladimir Vassilevsky! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 14 Jun

2006 14:05:20 +0000 (UTC):

VV>>> У 68HC11 инициализацию некоторых критичных регистров можно VV>>> сделать только в течение 64-x тактов после ресета и только один VV>>> раз.

DO>> А еще у IAR под него не было ключевого слова persistent, DO>> позволяющего избегать инициализации переменной при старте, поэтому DO>> мне приходилось вообще выкидывать обнуление bss из стартапа, чтобы DO>> сохранять значения переменных при ресете.

VV> Мне приходилось пару раз наступать на грабли с чужими программами, VV> в которых что-то делалось с неинициализированными статическими VV> переменными. VV> Поскольку такие проблемы случайны и зависят от экземпляра железа, VV> то их трудно выловить. Так что с принудительным обнулением не VV> только bss, но и всей памяти я согласен.

Так и я согласен при наличии модификатора persistent запрещающего инициализацию конкретной переменной. А так мне необходимо было после ресета продолжать выполнение программы с того же места (состояния) в котором этот ресет наступил, а как это сделать с автоматически обнуляющимися или инициализирующиеся переменными я не придумал.

dima

formatting link

Reply to
Dmitry Orlov

GS> Тут важна не мода, а тираж устройств. Сэкономишь на миллионном GS> тираже по доллару - набежит прибыли миллион баксов. Это не деньги, GS> говоришь? ;)

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

Reply to
Dmitry Ponyatov

Wed Jun 14 2006 20:44, Dmitry Orlov wrote to Vladimir Vassilevsky:

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

Каким образом ты отличаешь валидные persistent переменные от случайных (и к тому же зависящих от экземпляра) значений, которые оказываются в них по холодному старту? VLV

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

Reply to
Vladimir Vassilevsky

Hello, Vladimir!

DO>> А еще у IAR под него не было ключевого слова pesistent, DO>> позволяющего избегать инициализации переменной при старте, поэтому DO>> мне приходилось вообще выкидывать обнуление bss из стартапа, чтобы DO>> сохранять значения переменных при ресете.

VV> Мне приходилось пару раз наступать на грабли с чужими программами, VV> в которых что-то делалось с неинициализированными статическими VV> переменными. VV> Поскольку такие проблемы случайны и зависят от экземпляра железа, VV> то их трудно выловить. Так что с принудительным обнулением не VV> только bss, но и всей памяти я согласен.

А вот watch dog - с тобой не согласен :)

With best regards, Alexandr Torres.

[ Бомжей любить - не эхи модерить! ]

2:461/28, E-mail: snipped-for-privacy@yahoo.com

formatting link

Reply to
Alexandr Torres

Hello, Vladimir! You wrote to Dmitry Orlov on Wed, 14 Jun 2006 16:59:54 +0000 (UTC):

VV> Wed Jun 14 2006 20:44, Dmitry Orlov wrote to Vladimir Vassilevsky:

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

VV> Каким образом ты отличаешь валидные persistent переменные от VV> случайных (и к тому же зависящих от экземпляра) значений, которые VV> оказываются в них по холодному старту?

Ты сам произнес ключевое слово - "холодный старт".

Как отличить "хододный" от "горячего"?

У многих процессоров, есть специальные флаги в специальных регистрах, по которым можно определить причину ресета, например было это Power-ON, или это было срабатывание watch dog'а.

With best regards, Alexandr Torres.

[ Бомжей любить - не эхи модерить! ]

2:461/28, E-mail: snipped-for-privacy@yahoo.com

formatting link

Reply to
Alexandr Torres

Hello Jurgis!

13 Jun 06 22:16, Jurgis Armanavichius wrote to Igor Havtorin:

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

JA> Истинно так! :-) Может быть кто-то попробовал другие инструменты, но JA> Борланд как-то очень органично влился в широкие народные массы xUSSR JA> :-)

Борланд влился своим Трупо-Паскалем, черт его подери! :-Ё И именно из-за него на просторах экс-СССР наблюдается такое засилье паскалянтов. Впрочем, турбо-С++

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

Всего доброго!

А. Забайрацкий.

Reply to
Alexander Zabairatsky

Привет!

Wed Jun 14 2006 15:33, Kirill Frolov wrote to Jurgis Armanavichius:

Hе понял... Разве речь идет о варианте без ОЗУ? Если так, то не знаю. Я вообще себе слабо представляю работу без ОЗУ. Хотя бы маленького. И, конечно, абсолютно не отрицаю необходимость Ассемблера в некоторых случаях (вроде упомянутого тобой).

Че-то вы не туда заехали... Ведь и так понятно, что иногда (повторяю: иногда) бывает необходимо проделать какие-то действия на очень ранней стадии запуска программы. Так тут коню понятно, что раз надо - значит надо, и никуда не денешься. Hо. Если какие-то действия выполнить надо, то, следовательно, они известны (как установка регистра за 64 такта :-) А раз известны, то никаких проблем вставить их в стартап.

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

  1. Если аппаратные особенности диктуют необходимость поместить что-то важное в стартап - нет вопросов, нужно помещать. Hикакой сложности это не представляет. Ведь все-равно это делать HУЖHО.
  2. Освоение файла управления линковкой может составлять проблему для начинающего. Так пусть он спросит более опытных коллег! :-) Хотя бы и в этой эхе.

Я думаю так.

Юргис

Reply to
Jurgis Armanavichius

Привет!

Wed Jun 14 2006 16:08, Kirill Frolov wrote to Jurgis Armanavichius:

А Гугль, типа, документально подтвердит? ;-)

Да ладно, я ведь не придираюсь. Просто противно, когда ни с того, ни с сего начинают незаслуженно наезжать... Естественно, огрызаюсь... ;-)

Юргис

Reply to
Jurgis Armanavichius

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

Hello, Vladimir Vassilevsky! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 14 Jun

2006 16:59:54 +0000 (UTC):

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

VV> Каким образом ты отличаешь валидные persistent переменные от VV> случайных (и к тому же зависящих от экземпляра) значений, которые VV> оказываются в них по холодному старту?

Двумя способами. Во-первых, у меня часто есть аппаратный признак холодного старта. Во-вторых, есть переменная с некой сигнатурой. Если там не она - старт холодный. Учитывая, что fast switching - один из основных наших тестов (тестирует он конечно не перезапуск контроллера, а работу поджига лампы), и проблем с перезапуском не было даже при использовании только сигнатуры - это вполне работающий на разных контроллерах способ.

dima

formatting link

Reply to
Dmitry Orlov

Только вот эхи на гугле есть. Архивироваться начало оно как бы не до появления фидо в СССР...

Reply to
Kirill Frolov

Wed Jun 14 2006 22:47, Jurgis Armanavichius wrote to Kirill Frolov:

JA> 1. Если аппаратные особенности диктуют необходимость поместить что-то JA> важное в стартап - нет вопросов, нужно помещать. Hикакой сложности это JA> не представляет.

Ковыряние стартапа - гнилое дело. Потому что в стартапном коде обычно много ветвлений по #ifdef и if(), которые делают неизвестно что, неизвестно почему, неизвестно в каких случаях, и нигде про это не написано.

JA> 2. Освоение файла управления линковкой может составлять проблему для JA> начинающего.

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

JA> Так пусть он спросит более опытных коллег! :-) Хотя бы и JA> в этой эхе. Не у кого спрашивать.

VLV

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

Reply to
Vladimir Vassilevsky

Привет Jurgis!

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

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

Что значит "правки", если я сам его и написал? Стартап - это такой же исходный файл моего проекта, как и множество других. Любой файл своего проекта я правлю, если меня что-то в нем не устраивает. Если все устраивает - не правлю.

JA> А тогда непонятно, почему в пакет компилятора включается неработающий JA> стартап...

Что ты имеешь в виду?

JA> Сложная у тебя система...

Hо их сложность уж точно не в стартапе. :) Позвать OSInit() - это сущая ерунда, одна ассемблерная инструкция. А до этого надо еще инициализировать контроллер ОЗУ (чтобы ОЗУ работало), сделать ремаппинг ПЗУ (ибо при старте с адреса 0 арсположено ПЗУ а при нормальной работе там должно быть ОЗУ, а ПЗУ надо переместить в старшие адреса), при этом вовремя передать туда управление (ибо программа выполняется как раз из этого ПЗУ), инициализировать стеки (у ARM они разные для каждого режима), инициализировать кучу...

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

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Чудо-йогурт Био. Чемпион среди какао.

Reply to
Alex Mogilnikov


Hello, Kirill Frolov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 14 Jun

2006 18:58:03 +0000 (UTC):

KF> Только вот эхи на гугле есть.

Не все, только гейтующиеся.

KF> Архивироваться начало оно как бы не до появления фидо в СССР...

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

dima

formatting link

Reply to
Dmitry Orlov

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

Hello, Vladimir Vassilevsky! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Wed, 14 Jun 2006 19:23:56 +0000 (UTC):

JA>> 1. Если аппаратные особенности диктуют необходимость поместить JA>> что-то важное в стартап - нет вопросов, нужно помещать. Hикакой JA>> сложности это не представляет.

VV> Ковыряние стартапа - гнилое дело. Потому что в стартапном коде VV> обычно много ветвлений по #ifdef и if(), которые делают неизвестно VV> что, неизвестно почему, неизвестно в каких случаях, и нигде про это VV> не написано.

Обычно как раз ничего особо сложного там нет, особенно если это сишный, а не плюсовый стартап и как раз там и написано где и что надо делать.

JA>> 2. Освоение файла управления линковкой может составлять проблему JA>> для начинающего.

VV> Посмотрим, сколько потребуется времени, для того чтобы сделать VV> линкерный файл для многостраничной памяти.

Да, линкерный скрипт для правильно работающей сериализации при программировании я целый день делал (в смысле разбирался как его сделать, а так всего-то пара команд). Такова особенность большинтва скриптовых языков, о результатах работы которых приходится судить по косвенным данным (листинги, map'ы etc) и средства интерактивной отладки которых как правило отсутствуют как класс. Сюда относятся и ассемблерные и сишные препроцессоры, и линкерные скрипты и make и всякие средства вроде sed/awk и регулярные выражения. С одной стороны когда насобачишься - мощно. С другой - собачиться тяжело, забывается оно быстро. Иногда от необходимости все это писать спсает интуитивно понятное GUI IDE, но не редко и оно на какую-то альтернативную интуицию рассчитано. Причем трудности эти никому вокруг не только не интересны, но и вовсе непонятны В общем жизнь тяжела.

JA>> Так пусть он спросит более опытных коллег! :-) Хотя бы и в этой JA>> эхе.

VV> Не у кого спрашивать.

Это еще полбеды. Беда, что и отвечать-то тоже некому...

dima

formatting link

Reply to
Dmitry Orlov

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

Hello, Alex Kocharin! You wrote in conference fido7.ru.embedded to Pavel Grishin on Thu, 15 Jun

2006 00:44:36 +0400:

PG>> Адpесный интеpпpетатоp - небольшая пpогpамма, написанная на PG>> языке ассем- блеpа, котоpая yпpавляет pаботой всей Фоpт-системы. PG>> Компактность этой пpог- pаммы (в данной pеализации Фоpт-системы PG>> адpесный интеpпpетатоp занимает всего 17 (семнадцать!) байт), ее PG>> пpостота в значительной степени опpеделяют кpасотy и стиль Фоpта.

AK> А можешь провести эти байты? Интересно, однако...

Эти-то не очень интересно и найти легко. Интересно было бы для того PIC'а (или чего-то аналогичного) сравнить решение какой-то более-менее типовой задачи управления на С и Форте ну и для любителей ассемблера, можно и на ассемблере (причем сравнивать конечно и там и там полный объем заливаемого в контроллер кода и скорость его выполнения). Я бы предложил например такую задачку - сделать на PIC12F675 управляемый с последовательного порта на любой разумной скорости термостат. С последовательного порта задавать пороги On, Off, в градусах скажем от 30 до 90 и иметь возможность их прочитать. Температуру мерять термистором и АЦП. Какую-нибудь ножку как выход On/Off использовать. Если для подачи команд не достаточно готового терминала, предоставить win32 (можно консольную) программу для общения с устройством. Если кому-то ближе AVR или HC08 или еще что-то восьминогое из того же ценового диапазона (порядка полутора долларов в розницу) - тоже пошло бы.

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

dima

formatting link

Reply to
Dmitry Orlov

,-' Hello, Pavel Grishin! How is your connection today?

PG> Адpесный интеpпpетатоp - небольшая пpогpамма, написанная на языке PG> ассем- блеpа, котоpая yпpавляет pаботой всей Фоpт-системы. PG> Компактность PG> этой пpог- pаммы (в данной pеализации Фоpт-системы адpесный интеpпpетатоp PG> занимает всего 17 (семнадцать!) байт), ее пpостота в значительной степени PG> опpеделяют кpасотy и стиль Фоpта.

А можешь провести эти байты? Интересно, однако...

`-._ --- Alexander Kocharin ---

Reply to
Alex Kocharin

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.