AM>> 8 регистров х51 для всех вложений ? AM>> И сколько у тебя их, вложений? 2? Тогда понятно.
MP> Да хоть 10. Hадо тебе прислать исходник, чтоб ты понял о чем вообще речь.
Да, а то я видимо совсем тупой, если не понимаю, как можно 10 байт разместить в пяти.
MP>>> Соглашение на то и придумано чтоб функция не хотела их юзать, а MP>>> главное соглашение распространяется не на эту функцию only а на MP>>> ВСЮ ПРОГУ ЦЕЛИКОМ! AM>> Если в функции нужно 10 локальных переменных, что будешь делать?
MP> Если функции нужно 10 локальных переменных - программер ламер
И вообще все дураки. В общем, ты сложнее елочной гирлянды действительно ничего не делал. Посмотри, к примеру исходники ОС uCOS-II, и объясни, что ее автор - ламер.
MP> и скорее всего половина из них (а то и все) должны быть глобальными!
Точно, и прочно занимать свое место в ОЗУ, даже если нужны они всего один раз всего в одной функции.
MP> Алгоритмы с 10-тью указателями и счетчиками цикла - бредятина MP> свойственная ЯВУ.
Ты зациклился на каких-то частностях. Причем здесь вообще 10 указателей? Почему ты не выбрал число 1000? Выглядело бы убедительней, только к реальному положению дел не имело бы отношения.
AM>> Скажешь, что задача не имеет решения и откажешься от работы? AM>> Или все таки положишь часть локальных в ОЗУ?
MP> Даже не задумаюсь над этим.
Над чем не задумаешься?
MP>>> пишешь о соглашении но в реале ты его просто не можешь себе MP>>> представить программы написаные таким образом, AM>> Могу, и ты это продемонстрировал. Hо есть предел такой эффективности. AM>> 2-3 вложенных вызова функций и она кончилась. А главное - что особо AM>> она никому и не нужна. Только для самолюбования.
MP> Да предельная глубина стека асмовой проги вызовов 5-8,
Это в ПИК аппаратно ограничено количесвто вложений. В большинстве других архитектур вызовов может быть столько, сколько требуется для данной задачи и на сколько хватит стека.
MP> иначе надо че-то править в консерватории.
На, на Си перейти.
MP> А в реале вложенность еще меньше.
То есть main-loop, и все. Браво! Я понял, почему у тебя нет проблем с соглашением о вызовах - у тебя просто нет вызовов. "Нормальные герои всегда идут в обход".
AM>> Приведи пример такого соглашения, которое позволит при необходимсоти AM>> 10 локальных переменных и 2-ух аргументов функции не использовать AM>> более, чем 8 регистров х51. Причем не обязательно все параметры 8-ми AM>> битные.
MP> Я тебе исходник 10-ти летней давности один выложил - посмотри. MP> rotorman.nm.ru/18H.ZIP
Завтра, если время будет.
MP> В принципе конечно с тех пор все изменилось, мнемоники, процессоры, алгоритмы, MP> а вот соглашения остались, и они там явно видны. AM>> А у тебя значит основной цикл без вложенных вызовов, все едино и AM>> монолитно.
MP> Hет у меня цикл с вызовами - единое целое!
А бывает по другому? Цикл отдельно - вызовы отдельно?
AM>>>> пушить в стек". MP>>> В конечном этоге этих пушей будет 1-2 в глобальных подпрограммах. AM>> Это от объема задачи зависит. MP> Кто бы спорил. Hо опять-же пределы ASM реализаций для x51 и PIC - это не объем!
А что объем?
MP>>> Сам факт резервирования глуп. 4-5 байтовых локальных переменных MP>>> это обычно все, что надо для счастья в асмовой проге x51. AM>> Потому что ты видимо не писал сложных проектов, а писал мелкие AM>> драйвера типа обслуживания i2c и дисплея. Какой объем кода, без AM>> таблиц, в своих проектах под х51? MP> В последнее время стараюсь влезать в 8-16к.
Видимо, дальше начинаются проблемы с распределением регистров. У меня на х51 были проги от 4К до 32К, на MB90 сейчас около 100К, или чуть больше. И все на Си.
AM>> Или опиши функциональность своих устройств, чтобы понять о какой AM>> сложности идет речь. MP> Hу вот недавно писал диагностику на свой авто на 89с52. В принципе MP> функциональность высокая но алгоритмы детские, по rs232 получил дамп, MP> преобразовал кое чего по простым формулам, выдал на экран. Уровень вложений MP> где-то 4-5 max. А вообще не люблю x51, но там он подходил четко.
И это все? Это высокая функциональность?
MP>>> Да возьми функцию где будет преобразование с 5-тью таблицами, и ты MP>>> получишь 5 ПАР указателей в регистрах - локальных переменных, AM>> Вообще, таблицы - это не столь распространенные вещи. Да, они есть, AM>> бывают, но они не обрабатываются в каждой функции проекта. И долеко AM>> не в каждом проекте их есть больше 2-ух, а тем боляя 5. MP> У тебя 5 таблиц ы проeкте max? Прости но для меня это "уровень елочной MP> гирлянды".
Да, а сколько должно быть таблиц? 100? Я вообще всегда считал, что количество таблиц определяется их необходимостью, а не сложность проекта оценивается количеством таблиц. Вообще не задумывался никогда, сколько таблиц у меня в проекте. Может ни одной, может 2, а может и 20, какая разница?
AM>> Что-ж так? Это же реальный код. AM>> То есть признаем, что перерасход ПЗУ на Си от 15 до 50% в зависимости AM>> от конкртеного проекта? MP> Hу если у тебя перетасовка масива данных - естественно ты не проиграешь.
А нужно?
AM>> Перестаем голословно говорить о мифических порядках и разы?
MP> Hет. Смотри приложенный исходник. Думай как это писать на си ;)
Посмотрю, но не сегодня.
AM>>>> MOV dptr,#Addr_B AM>>>> MOV A,@dptr AM>>>> MOV R7,A AM>>>> MOV dptr,#Addr_C AM>>>> MOV A,@dptr AM>>>> ADD A,R7 AM>>>> MOV Addr_A,A
MP>>> Это не на асм - AM>> А на чем?
MP> Hе знаю. Я тебе уже говорил - не реальный пример класть БАЙТ в xram! Потому, MP> что для них есть ram, а если ты кладешь байт в xram - значит ram твой любимый MP> язык уже засрал.
Ты сильно ограниченно мыслишь. Какая разница, зачем это нужно. Может я принимаю из канала пакет объемом в килобайт, а потом начинаю обрабатывать его поля определенным образом, например считать КС IP пакета либо вычислять длину его данных. Ты же аргументируешь, что это не реально, потому что это не может понадоиться. А если понадобилось - то сам дурак. Ну и что ты доказал? Только ограниченность своего мышления.
MP>>> это вопервых неработоспособно AM>> Почему? Hу может в синтаксисе напутал немного. MP> movx
описка, вот радости - нашел к чему придраться, так же как Шепелев придрался к переменной с именем char.
MP>>> а во вторых смахивает на производное компиляторов ЯВУ ;) AM>> А как будет правильно на асм? AM>> Сложить 2 байта из xdata и поместить результат в data. MP> Правильно в XDATA БАЙТЫ не раскладывать!
Ну давай, поучи теперь принимать пакет объемом 250 байт в IRAM. С нетерпением услышу совет.