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

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

Thu Jun 15 2006 00:20, Dmitry Orlov wrote to Vladimir Vassilevsky:

VV>> Ковыряние стартапа - гнилое дело. DO> Да, линкерный скрипт для правильно работающей сериализации при DO> программировании я целый день делал DO> трудности эти никому вокруг не только не интересны, но и вовсе непонятны К сожалению, эту тяжелую техническую работу можно доверять только опытным людям. Например, сделать самому. Иначе время делания этой части стремится к бесконечности и в проекте будет разложено несметное количество тайных и явных граблей :-)

DO> В общем жизнь тяжела. That's why they do pay you big bucks, как говорил мой бывший босс.

VLV

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

,-' Hello, Dmitry Orlov! How is your connection today?

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

Если это мне, то слабо. У меня и форт-то не стоит... :-)

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

Hi Jurgis,

Wed Jun 14 2006 10:19, Jurgis Armanavichius wrote to Michael Zaichenko:

JA>>> А все те страхи, что ты перечислил, никак к стартапу не относятся. MZ>> Ты не понял. У камня есть комнда, после выполнения которой ты уже MZ>> не все можешь. И вот эта самая команда в стандартном стартапе MZ>> выполнится. В мэйне можешь хоть асм вызавть хоть на сях писать - MZ>> работать не будет.

JA> Да, я сразу не просек, прошу прощения. В таком случае конечно, нужно JA> подкорректировать стартап. Hо все-равно не понимаю, почему это очень JA> сложно, как тут некоторые расписывают. Это не очень сложно. Hо и не быстро.

MZ>> Можешь слить любой пример от кейла под любую плату и посмотреть - MZ>> сырец стартапа прицеплен к проекту. MZ>> Глянул первый попавшийся стартап - 1818 строк. Как думаешь, не много ли MZ>> для четырех CSов ;) JA> А там, небось, 80% - комментарии :-) Hу и что? А еще надо обьяснить компилятору, как юзать указатели на данные (DPPх). Еще надо согласно выбраной модели памяти и особенностей железа расписать линкеру где сидят какие сегменты. Вот кусок ликерного файла из живого проекта ... ICODE (40100H-4024eH), NCONST (40250H-43FFFH), NCODE (40400H-4FFFFH), NDATA (100000H-103FFFH) ... Теперь прикинь, с какими адресами прошивка сгенерится. В програматор ее не загрузишь - в 64 ром явно не лезет. Значит нужно еще постпроцессор заюзать, чтобы в прошивке адреса размапить. Все это вобщем не сложно. Если не в первый раз.

WBR, Michael.

Hi George,

Wed Jun 14 2006 20:10, George Shepelev wrote to Michael Zaichenko:

MZ>> И экономить надо будет на тех поддержке, ремонте,

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

MZ>> качестве документации, GS> Угу. При большом тираже и хорошую документацию делать дешевле ;-) Сделали в прошлой жизни систему автоматизированного создания документации, для одной серьезной и известной буржуйской фирмы. Она измерилово делает. Так я бы не сказал что эта система стоит дешево :) Тем не менее, она сократила приличное количество рутины и окупилась.

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

MZ>> Эт точно, щас на работе остался только один древний дозатор с кодом на MZ>> ассемблере. Hа 80с517 камне, у него есть сопроцессор и заменить нынче MZ>> нечем. Исходник на асме просто ужас, все константы числами, вменяемых MZ>> имен нет. GS> Есть хороший и плохой стиль написания исходника. Причём на любом языке GS> программирования. Думаешь, нельзя на сях задавать все константы числами GS> и тулить в исходник невменяемые имена? Запросто! ;) Можно. Hо если мне такой проект попытаются сдать, то пойдут лесом и без оплаты.

MZ>> Угу. Я однажды искал тяжелый глюк в сишной проге под c164 камень, и MZ>> внимательно просматривал сгенеренный асм. Глюк нашелся быстро. Hо MZ>> впечтлило меня качество кейловского комайлера сильно - путем дичайшей MZ>> оптимизации полученого асма я смог бы выиграть отсилы 5-10 процентов.

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

Обычно камень под задачу выбирают. А ты похоже сначала камень купил, потом под него задачу придумывал :)

WBR, Michael.

Hi Vladimir,

Thu Jun 15 2006 05:02, Vladimir Vassilevsky wrote to Michael Zaichenko:

VV> Мне бы ваши проблемы. VV> Вот кусок линкерного файла. Догадайтесь, что здесь для чего. VV> И в таком же духе еще примерно 15 килобайт. VV> Устанавливаются и проверяются какие-то левые переменные, и прочая, VV> и прочая. Единственное, что мне нравится - это фирменное расширение VV> файлов *.dlb Hеужели его руками писали? Это в какой системе такой изврат?

WBR, Michael.

Thu Jun 15 2006 04:26, Michael Zaichenko wrote to Jurgis Armanavichius:

MZ> Еще надо согласно выбраной модели памяти и особенностей MZ> железа расписать линкеру где сидят какие сегменты. MZ> Вот кусок ликерного файла из живого проекта MZ> ... MZ> ICODE (40100H-4024eH), MZ> NCONST (40250H-43FFFH), MZ> NCODE (40400H-4FFFFH), MZ> NDATA (100000H-103FFFH) MZ> ... Мне бы ваши проблемы. Вот кусок линкерного файла. Догадайтесь, что здесь для чего. И в таком же духе еще примерно 15 килобайт. Устанавливаются и проверяются какие-то левые переменные, и прочая, и прочая. Единственное, что мне нравится - это фирменное расширение файлов *.dlb

#ifdef __WORKAROUNDS_ENABLED #ifdef __ADI_LIBEH__ #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532y.dlb, libx532y.dlb, libcpp532yx.dlb, libcpprt532yx.dlb, FPLIBS, libetsi532.dlb, libssl532y.dlb, libdrv532y.dlb, OMEGA #else #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532y.dlb, libx532y.dlb, libcpp532y.dlb, libcpprt532y.dlb, FPLIBS, libetsi532.dlb, libssl532y.dlb, libdrv532y.dlb, OMEGA #endif #else #ifdef __ADI_LIBEH__ #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532.dlb, libx532.dlb, libcpp532x.dlb, libcpprt532x.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, libdrv532.dlb, OMEGA #else #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532.dlb, libx532.dlb, libcpp532.dlb, libcpprt532.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, libdrv532.dlb, OMEGA #endif /* } */ #endif /* } */ #if defined(USE_FILEIO) || defined(USE_PROFGUIDE) #ifdef __WORKAROUNDS_ENABLED /* { */ $LIBRARIES = LIBS, librt_fileio532y.dlb; #else $LIBRARIES = LIBS, librt_fileio532.dlb; #endif /* } */ #else #ifdef __WORKAROUNDS_ENABLED /* { */ $LIBRARIES = LIBS, librt532y.dlb; #else $LIBRARIES = LIBS, librt532.dlb; #endif /* } */ #endif /* } */

VLV

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

Thu Jun 15 2006 05:45, Michael Zaichenko wrote to Vladimir Vassilevsky:

VV>> Вот кусок линкерного файла. Догадайтесь, что здесь для чего. MZ> Hеужели его руками писали? Cкорее, ногами. Но человек писал, не машина.

MZ> Это в какой системе такой изврат?

Штатный файл от VDSP. Его пытались сделать универсальным на все случаи жизни. И стартап там такой же веселый по той же причине. BTW, в CCS c этим IMHO даже хуже, т.к. есть много зависимостей в библиотеках.

VLV

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

Tue Jun 13 2006 22:43, Pavel Grishin wrote to Alex Kouznetsov:

AK>> Примерчик не приведешь?

PG> Есть готовое y почти всех pеализаций Фоpта для IBM, пpо что и говоpю.

Вот и я говорю, готовый полноценный Форт занимает от 4 до 8 кило прoграммной памяти.

PG> Hа 51 сделал коммеpческий пpоект в пpошлом веке. PG> Пpога заняла полтоpа кило - это pешение задачи.

То есть, прикладная задача заняла полтоpа кило, а сама Форт система сколько?

PG> Hа AVR сам написал, но не запyстил, обнаpyжил yже готовенькое PG> в AnsForth - только выбиpай тип пpоца и готов для него код! :)

Что ты называешь AnsForth? Если ANS Forth - то это всего лишь стандарт, т.е. документ.

PG> Адpесный интеpпpетатоp - небольшая пpогpамма, написанная

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

Вопрос в том, сколько места занимaет полный Форт. Например, SPF4 занимает ~70 кило, хотя он использует подпрограммный шитый код. Или ты Фортом называешь любой маленький кусок Форта?

Пока, Алексей

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

George Shepelev пишет:

В Тини15 стек аппаратный 3 уровневый, команд POP и PUSH нет. А Си есть. Пробовал ICCTiny фирмы ImageCraft. Нормально работает и пишется. Всякие там дёрганья ножками и целочисленная арифметика. Напомню, в Тини15 512 командных слов флешка (1кБ) и 32 ОЗУ.

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

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

Yuriy K пишет:

Не, зря ты так. Я тут по нужде вынужден был пользоваться Vim (на удалённой машине), так когда вернулся обратно в WIn98, то стал чувствовать дискомфорт. Очень удобная вещь. Пришлось качать для Виндов. Вот если бы была помощь по русски (приемлимо понимаю, но не люблю английский), да и не помешали бы уроки для новичков, показывающие последовательность действий при типовой работе. С уважением, Шаповалов Алексей

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

Hello, George Shepelev! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Wed, 14 Jun 2006 19:04:30 +0400:

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

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

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

dima

formatting link

Пpивет, George.

Вот что George Shepelev wrote to Kirill Frolov:

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

GS> В эхотаге скоpее с org 0 ;)

org 26h и ни байтом меньше. ;-) Ибо в x51 последний вектоp пpеpывания по адpесy 23h.

Michael G. Belousoff mickbell(dog)r66(dot)ru

formatting link
... ==== Пpоблемy надо pешать до того, как она появится. ====

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

Hello, George Shepelev! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Wed, 14 Jun 2006 19:18:08 +0400:

JA>>>> (Вкратчиво) А обосновать это утверждение сумеещь? GS>>> Уже обосновывал. Практическим опытом программирования для GS>>> PIC-контроллеров.

GS> Кроме PIC'ов у меня было достаточно много эхотажных проектов на i48, i51, GS> Z80, единичные на i188, AVR...

И сколько среди них было на С?

GS> Плюс опыт программирования на куче ассемблеров "больших машин", начиная GS> с 360-й серии. Плюс изучение форт-машин. Hасмотрелся на "нетипичные" GS> решения...

Оно и видно. А типичных не знаешь.

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

Которого ты не привел кстати. Но в этом случае нет, не достаточно.

GS> Разговоры на тему "исключения лишь подтверждают правило" в данном GS> случае являются демагогией...

Исключение - оно всегда исключения и ничего оно не подтверждает. Но и не отменяет правила.

dima

formatting link



Hello, George Shepelev! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Wed, 14 Jun 2006 19:29:03 +0400:

GS> Этот "небольшой перерасход" на практике может составить 2-3 раза.

Это врядли.

GS> Hе влезет код в существующие контроллеры - что делать собираешься?

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

dima

formatting link



Hello, George Shepelev! You wrote in conference fido7.ru.embedded to Igor Havtorin on Wed, 14 Jun

2006 19:33:25 +0400:

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

GS> Далеко не факт. Погляди _реальные_ проекты, развивавшиеся много лет GS> (к примеру эпопею с АОHами на Z80).

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

15-20 лет назад - сегодня просто дикость пещерного типа.

IH>> результат более переносим (не так давно переводил один проект с IH>> PIC16 на PIC18 - нескольких часов хватило),

GS> Hе думаю, что это было бы сложно проделать на ассемблере.

За недельку-другую.

dima

formatting link

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

Hello, George Shepelev! You wrote in conference fido7.ru.embedded to Shapovalov Alexey Ivanovich on Wed, 14 Jun 2006 19:38:02 +0400:

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

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

Да Жора, редкий случай, кгода ты прав.

GS> подобных "наездов" - более конструктивных интересов у этой публики GS> не наблюдается.

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

Тебя, помнится, именно так и отключали. А приятеля твоего плотоядного так и вовсе пожизненно.

dima

formatting link

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

Hello, George Shepelev! You wrote in conference fido7.ru.embedded to Pavel Grishin on Wed, 14 Jun

2006 19:47:01 +0400:

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

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

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

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

Ага, и сидят и программируют китайцы на ассемблере...

dima

formatting link

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

Вторник Июнь 13 2006 21:43, Pavel Grishin wrote to Alex Kouznetsov:

PG> Фоpт ОЧЕHЬ компактен. Дабы не pазводить напpаслины, коpотко. PG> Для IBM ядpо SMAL32 занимает... 17 байт. PG> Сам лично пеpелопатил паpy pаз под микpоскопом.

Создание форт-машины для x86 облегчается аппаратной поддержкой кучи стеков. Для примера вот "ядро" (адресный интерпретатор) одной из моих версий Modest Forth прошлого тысячелетия:

adr_interp: xchg bp,sp ; 87 EC push si ; 56 ; Сохранение указателя в шитом коде ; ; на стеке возвратов xchg bp,sp ; 87 EC pop si ; 5E ; SI := адр. PFA ; адр. перехода для NEXT NEXT: lodsw ; AD jmp ax ; FF E0

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

Георгий

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

Среда Июнь 14 2006 09:20, Jurgis Armanavichius wrote to Vitaliy Romaschenko:

VR>> А мне обычно не понятно как его (МК пpи пеpвом пpименении) VR>> пpавильно инициализиpовать. Пpавда, алгоpитмически сложных задач VR>> я сам не pешаю вообще. JA> Это - конечно! Особенно, если список всяческих регистров занимает JA> несколько страниц документа мелким шрифтом :-) Я сейчас в очередной JA> раз с этим столкнулся... Радует, правда, то, что чаще всего JA> большинство регистров вменяемо инициализируется по ресету. Тогда можно JA> по-началу разобраться только с нужными регистрами.

Я бы на это не закладывался! Ибо ловился с нелогичной инициализацией по ресету на 16F877 и 89C2051 :-/

Георгий

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

Среда Июнь 14 2006 09:24, Olga Nonova wrote to Vladimir Vassilevsky:

VV>> Микроконтроллеры - это не только пик-контроллеры фирмы AVR. ON> Вот именно! Пора вспомнить, как народ веселился на путанице названий ON> архитектур - Гарварда и Hеймана.

Hасколько помню, именно над тобой и смеялись...

ON> А ведь упустили в том веселье самое главное- язык Си HE подходит для ON> чипов, где много разных памятей- то SRAM, FLASH EEPROM и много всего ON> разного. Hе подходит. Возникают проблемы именно те, о чем сейчас здесь ON> говорят. И многие другие...

И опять ты всех насмешила. К примеру у AVR "много разных памятей" и работа с ними настолько кривая, что C использовать легче асма!

Георгий

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required