Hу сейчас я вам урок грамотного программирования даду ;)

AM>> И что, ты мне предлагаешь изучить исходник аона в более 10000 строк на AM>> ассемблере абсолютно без каких-либо без комментариев? MP> Я предлагаю поискать команду DI и подумать как написать на Cи все что после MP> нее, впрочем программа проста как танк - нафиг там вообще коментарии

Точно, нафиг, только в мозг интерпретатор z80 встроить, и вперед.

AM>> Да еще на странной помеси диалекта intel8080 с Z80? MP> Мнемоники 8080 вызывают у тебя затруднение?

Ты находишь, что нормальному человеку они могут понравиться?

MP> Так и думал.

И что ?

AM>> Хотя впрочем быстрый просмотр показывает, что иногда AM>> аргументы передаются через глобальные переменные в том числе: MP> Там 2 локальных переменных. FADR и TYPADR. И то с натягом. AM>> Где они там используются особо у меня времени разбираться нет. AM>> И ты утверждаешь, что это сопровождаемо кем-либо, кроме автора? MP> Да.

Возможно, только тобой и не менее гениальным Шепелевым.

AM>> И ты хочешь сказать, что даже сам автор смог бы сопровождать это, AM>> скажем сейчас, через 5-10 лет? MP> Легко. В чем проблема то.

В отсутствии комментариев, как минимум.

Reply to
Andy Mozzhevilov
Loading thread data ...

Привет, Maxim! Вы писали для George Shepelev , Fri, 30 Jan 2004 22:59:24 +0300:

MP> Hа самом деле правильная постановка вопроса должна звучать так MP> "какие возможности есть у ЯВУ, которых нет у АСМ" ;)

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

WBR, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

Reply to
Leha Bishletov

OR> 2-Feb-04 07:25 Andy Mozzhevilov wrote to Maxim Polyanskiy:

MP>>> нужна хорошая файловая система! MP>>> В исходниках на АСМ.

AM>> на каком?

MP>>> В идеале Fat12/16/32 совместимая.

AM>> На Си можно найти без проблем в и-нете, имхо. OR> Понимаешь, тут проблема есть. Если бы оно было уже скомпилировано, OR> то он бы его идой посмотрел и за пару дней переписал бы на асме гораздо OR> компактнее и эффективнее. Но эти подлиые сишники в интернете исходники OR> выкладывают.

Не удержался, вставлю таки и свои 5коп :-)

Для начала нескромный вопрос к MP - а сколько Вам лет? (сорри, если задел) Ваша приверженность к асму прямо-таки дышит юношеским максимализмом. Я не хочу сказать ничего обидного - узнаю себя лет так 10 назад :-) Тогда Ваши посты вполне могли быть моими :-)

Кто-то из известных в IT людей (уж не помню кто): "Кто в молодости не писал на ассемблере - тот не имеет сердца, а кто продолжает писать на нем в зрелые годы - тот не имеет головы". Студентом я не признавал ничего кроме ассемблера - жизнь была проста и удивительна - MACRO-11 (на любимой СМ-4 под отличной RSX-11 v4.1, или RT-11FB/SJ на ДВК), хотя ему была вполне неплохая альтернатива в виде FORTRAN-IV (Cи компиляторы я пробовал разные порты с Unix - это была целая проблема найти их - тогда программы носили на ленточных бобинах, но нормального Си у меня не было) или классический PASCAL (но этот был довольно громоздок). Правда и серьезных проектов не было - редко превышался объем в 2К строк (сейчас это вообще детский объем).

Ну с i8080/Z80 и машинами типа Орион/ZX тоже все понятно - больших проектов также не было (только не надо про АОНы тех времен - сиротские 8К дизасмились в сиротские же 3К строк), хотя я ухитрился для себя написать аналог экранного редактора TED (тяжелое наследие RSX-11 :-) Я был ограничен размером исходного текста ("файла" на ORDOS :-) в 48К, поэтому это был шедевр - без комментариев, без пустых полей меток, трехбуквенные метки :-) и прочие прелести. Любопытно, что вторую половину проекта я редактировал в его же ранних версиях :-) Небольшой, что-то около 6К строк, как помнится.

Потом появился "Поиск-1", правда, сразу с дисководом. Потом первые PC. Но тут у меня уже были уважительные причины использовать ассемблер - в-основном, я занимался организацией многозадачности на MS-DOS, уже "не по детски" - с фоновым файловым вводом-выводом, с разделением XMS и железяками. Конечно это можно было написать на C, но, как я позже выяснил для этого надо гораздо больше профессионализма - нужно очень хорошо знать свой компилятор и грамотно писать ассемблерные вставки для выполнения соглашений по вызовам. Потом был виртуальный монитор для 386-го - тоже без асма трудно - да и не было тогда 32-битных компиляторов.

Когда я прочитал про API Win16 (хотя сначала OS/2, просто книгу хорошую купил) я был искренне возмущен - "ну кАзлы, блин, где мое любимое int 21H с раскладкой параметров в регистры!!" :-) А потом пошел серьезный эмбеддинг - в 1993-ем написали первый кассовый аппарат, на ассемблере x86, запихнули его в 16К. (Всего-то было 500К исходников) даже отладили и запустили. НО: рынок не спит, динамически меняется и никто годами не будет ждать пока "самый_крутой_программист на_ассемблере" удосужится внести изменения в свою "самую_крутую_и_быструю асмовую_программу" а потом будет еще годами с умным видом искать баги. НУЖНО ЗДЕСЬ И СЕЙЧАС!!!. Да и функциональность требовалось расширять и улучшать. Тогда я поупирался-поупирался и СВЕРШИЛОСЬ - BC 3.1 был заставлен генерировать ROMABLE код. Для особо упрямых (в моем лице :-) был оставлен небольшой кусок асма - работа собственно с железом (+прерывания +начальный старт) - 10% от проекта и все были довольны. Особенно я был потрясен пару лет спустя когда за ОДИН ДЕНЬ 100К строк сишного кода было перенесено на другую платформу (x86->AVR) (я до этого месяц возился с переписыванием железячных функций на новом асме)

Ну а собственно написать эту стори меня сподвигло упоминание FAT - это был мой первый проект на С для эмбеддед системы - было две недели времени, нужно было написать примитивы для FAT12/16 на AT45. Ну начал я очень бодро - на асме, через пару дней мне стало грустновато - довольно скучно пересылать DWORD-ы на AVR, в ход пошли так любимые GS макросы, потом и с ними стало грустно. Появилась предательская мысль "а может C - это не так уж и плохо" :-).

Последний гвоздь "в коробочку" с асмом был забит два месяца назад - был заказ на сложный VxD (там получились мегабайты сишных исходников), до этого на Win9X я изощрялся на асме - API VMM очень этому способствует, но тут я очень оценил VС + VTOOLSD. Мне плевать, что там оверхед, главное, чтобы лично у моего серого органического процессора оверхеда не было :-) Проект с такой сложной логикой - на асме не поднять.

Итого: я _ОЧЕНЬ_ люблю ассемблер, работал с ним на десятке архитектур, можно сказать - фанат, но основную работу я делаю на _C_ - поскольку это _УДОБНЕЕ_ и в конечном счете _ВЫГОДНЕЕ_. Понимание этого приходит не сразу - и, как видно по конфе - не ко всем :-)

Сорри за столь длинной повествование - настроение просто нерабочее что-то :-)

Reply to
Vyacheslav Ovsiyenko

Hello Andy.

03 Feb 04 10:44, you wrote to Maxim Polyanskiy:

MP>> 2-х задач? Я могу их и в одном решать.

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

Я считаю, что да. Она ведь две задачи решает. Просто это один из методов организации многозадачности.

Hо когда попадаются задачи, трудно разбивемые на иттерации, хочется, чтобы кто-то контексты переключал.

Alexey

Reply to
Alexey Boyko

Hello Vyacheslav.

03 Feb 04 12:59, you wrote to Oleksandr Redchuk:

VO> Сорри за столь длинной повествование - настроение просто нерабочее VO> что-то :-)

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

Alexey

Reply to
Alexey Boyko

Hello, Alexey! You wrote to All on Tue, 03 Feb 2004 14:55:12 +0300:

VO>> Сорри за столь длинной повествование - настроение просто нерабочее VO>> что-то :-)

AB> Предлагаю, на этой ноте свернуть топик, ибо очень много рабочего AB> времени уходит на чтение, а все спорящие остались при своем мнении.

Поддерживаю. Тем более, что лучше не скажешь.

Alexander,Derazhne@adic,kiev,ua (replace commas with dots) Alexander Derazhne

Reply to
Alexander Derazhne

Привет, Andy!

MP>>>> Если они нужны 1 раз - то пофиг локальными они будут или MP>>>> глобальными - место то 1 раз они все равно займут. ;) AM>>> Где, в памяти? Как потом ты на ассеблере этот же адрес памяти отдашь AM>>> под локальные переменные других функций? MP>> Да так и отдам.

AM> Как отдашь? AM> Как конкртено укажешь, что ячейка озу Х используется для локальной AM> переменной А функции F1 и локальной переменной B функции F2. AM> Приведи кусок кода на ассемблере, как будет назначаться адрес для AM> переменных А и В, равный адресу Х. Странно, что ты задаёшь такой вопрос...

x db 1

Func1: ;пользуешь тут x как временную переменную ;можно через equ перименовать её в А, если для читабельности надо A equ x return

Func2: ;и тут пользуешь x как временную переменную ;можно через equ перименовать её в В B equ x return

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

Сишная терминология тут не подходит. В асме глобальная, локальная - это как ты сам собой договоришься. Да ты это и без меня прекрасно знаешь.

В простых асм проектах я так частенько делаю, завожу переменную temp и пользую её в разных функциях как временную, вроде не сложно запомнить. В сложных проектах - Боже упаси, это маразм такое количество рутинной инфы держать в голове и они естессно делаются на Си.

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

Владимир Чекин

Reply to
Vladimir Chekin

AM>> действительно ничего не делал. Посмотри, к примеру исходники ОС AM>> uCOS-II, и объясни, что ее автор - ламер. MP> Смотрел, вопервых она избыточна донельзя. Поэтому применять ее - смысла MP> мало. MP> Потом все эти ваши ОС они по сути не нужны!

Как хорошо сказано! Качество бреда просто потрясает воображение.

MP> Все это из-за невозможности писания на си сложных распределенных задач MP> поскольку си не обладает развитой системой ветвлений

Это ты про goto, ограниченный в пределах блока? Если бы ты понимал как компилятор распределяет автоматические переменные, то и понимание почему goto работает именно так тоже бы пришло.

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

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

AM>> Точно, и прочно занимать свое место в ОЗУ, даже если нужны они всего AM>> один раз всего в одной функции. MP> Если они нужны 1 раз - то пофиг локальными они будут или глобальными - MP> место то MP> 1 раз они все равно займут. ;)

Проблема в том, что они его займут! Когда нужны, и когда не нужны тоже. Ты же регистр под переменную выделяешь только для какого-то участка кода от и до. А глобальную переменную на весь жизненный цикл программы, и использовать ту же самую ячейку ОЗУ для другой переменной ты уже не можешь. А компилятор может. В результате твоя супер-пупер оптимизированная ассемблер-программа памяти занимает больше, чем сгенерированная компилятором. Hет, ты тоже можешь, если хочешь, брать "ватман размером с комнату" и чертить на нём граф вызовов всех функций. И не дай бог, поменяешь что в исходном тексте -- начинай всё с начала.

AM>>>> Или все таки положишь часть локальных в ОЗУ? MP>>> Даже не задумаюсь над этим. AM>> Hад чем не задумаешься? MP> Да нет у меня таких проблем понимаешь. Все ложится и всего хватает. Ты MP> пойми MP> что если я все переменные объявлю глобальными - регистров мне зачастую MP> хватит MP> чтоб все равно получить выгрыш в разы у си на этих-же алгоритмах.

Где этот выигрыш в разы? Один апологет ассеблера пока что привёл какие-то невразумительные и чреватые подводными граблями макросы, другой прибегая к алгоритмической оптимизации заявляет о каких-то безумных процентах. Если *тот же самый* алгоритм записать на C будет те самые 50% "оверхеда", а не 500% и не 5000%...

AM>> Это в ПИК аппаратно ограничено количесвто вложений. В большинстве MP> Больше 5-8 - программера надо УВОЛЬHЯТЬ!

Ты что-нибудь о рекурсивных функциях слышал?

MP> И тут ты резко передернул! Ты байт от массива отличаешь? Hапиши-ка мне асм MP> производное си компиллера для хождения в массиве xram и я тебе моментально MP> укажу где компилятор облажается ;)

Esli ty такой умный, почему ещё не занимаешь должноать Главного Программиста в IAR software inc, и почему компиляторы до сих пор ТАК лажаются?

Reply to
Kirill Frolov

Hi!

Maxim Polyanskiy сообщил/сообщила в новостях следующее:

Ну, у меня есть формировалка DTMF на С, причем на разных платформах, так что непонятно, почему это вызывает ухмылку. Исторически, первый вариант был в проекте на С166. В том проекте ресурсов было дофига, поэтому на чистом С, во всем проекте только одна строка на асм. И та - теплый старт (jmp 0), поскольку не придумал я, как такое на нативном С сделать. Другой проект - ATMega16, там было желание напихать функциональности по максимуму, сколько будет позволять быстродействие, поэтому некоторые критичные по времени куски переписаны на асме в процессе оптимизации. Как раз кусочек из генерации DTMF (строк 15) туда попал и некоторые обработчики прерываний И последний, относительно недавний вариант - на PIC16. Там основным критерием было время разработки, поэтому опять - чистый С, ни строки на асм. Во всех случаях генерация DTMF - не более пары процентов от объема кода всего проекта (если не считать таблицу). То, что можно это все переписать асм, и при этом код будет чуток покороче, сомнений не вызывает. Но сокращение все равно даже близко не позволит упихать это в кристал меньшего размера. Процентов 20, ну 25 (по всему проекту) А во втором случае, полагаю, не будет и 20, поскольку все, что можно оптимизировать, там уже оптимизировано. Поэтому нафига?

Примите уверения в совершеннейшем к Вам почтении

Reply to
Sergey Zabelin

Привет, Andy!

AM>>> И что, ты мне предлагаешь изучить исходник аона в более 10000 строк на AM>>> ассемблере абсолютно без каких-либо без комментариев? MP>> Я предлагаю поискать команду DI и подумать как написать на Cи все что MP>> посленее, впрочем программа проста как танк - нафиг там вообще коментарии

AM> Точно, нафиг, только в мозг интерпретатор z80 встроить, и вперед. Hаконец-то догадался! В этом весь кайф. Процесс - вот ключ.

Владимир Чекин

Reply to
Vladimir Chekin
3-Feb-04 18:29 Sergey Zabelin wrote to Maxim Polyanskiy:

SZ> ресурсов было дофига, поэтому на чистом С, во всем проекте только SZ> одна строка на асм. И та - теплый старт (jmp 0), поскольку не придумал SZ> я, как такое на нативном С сделать.

Не jmp, а call, но в данном случае это неважно, всё равно указатель стека переинициализируется. Может не работать только если есть защита памяти и сегмент стека исчерпан :-)

typedef void (*voidfunc)();

void foo(char ch) { if (ch == 'R') ((voidfunc)0)(); }

wbr,

Reply to
Oleksandr Redchuk

"Oleksandr Redchuk" сообщил в новостях следующее:

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

Примите уверения в совершеннейшем к Вам почтении

Reply to
Sergey Zabelin

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

Воскресенье Февраль 01 2004 11:18, Andy Mozzhevilov wrote to Maxim Polyanskiy:

MP>>>> пишешь о соглашении но в реале ты его просто не можешь себе MP>>>> представить программы написаные таким образом, AM>>> Могу, и ты это продемонстрировал. Hо есть предел такой AM>>> эффективности. 2-3 вложенных вызова функций и она кончилась. А AM>>> главное - что особо она никому и не нужна. Только для AM>>> самолюбования. MP>> Да предельная глубина стека асмовой проги вызовов 5-8, AM> Это в ПИК аппаратно ограничено количесвто вложений. В большинстве AM> других архитектур вызовов может быть столько, сколько требуется для AM> данной задачи и на сколько хватит стека.

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

MP>>>> Сам факт резервирования глуп. 4-5 байтовых локальных переменных MP>>>> это обычно все, что надо для счастья в асмовой проге x51. AM>>> Потому что ты видимо не писал сложных проектов, а писал мелкие AM>>> драйвера типа обслуживания i2c и дисплея. Какой объем кода, без AM>>> таблиц, в своих проектах под х51? MP>> В последнее время стараюсь влезать в 8-16к. AM> Видимо, дальше начинаются проблемы с распределением регистров.

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

AM> У меня на х51 были проги от 4К до 32К, на MB90 сейчас около 100К, или AM> чуть больше. И все на Си.

Симптоматично...

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е знаю. Я тебе уже говорил - не реальный пример класть БАЙТ в MP>> xram! Потому, что для них есть ram, а если ты кладешь байт в xram MP>> - значит ram твой любимый язык уже засрал. AM> Ты сильно ограниченно мыслишь. AM> Какая разница, зачем это нужно.

Только для сишников нет разницы что и как делать. Скомпилилось, и ладно...

MP>>>> это вопервых неработоспособно AM>>> Почему? Hу может в синтаксисе напутал немного. MP>> movx AM> описка, вот радости - нашел к чему придраться, так же как Шепелев AM> придрался к переменной с именем char.

Если ты делаешь ошибки (причём грубейшие) в нескольких строчках примера, можно только представить, сколько их будет в _сложных_ задачах... :-/

Георгий

Reply to
George Shepelev

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

Понедельник Февраль 02 2004 15:03, Andy Mozzhevilov wrote to Maxim Polyanskiy:

MP>> Я тебе исходник 10-ти летней давности один выложил - посмотри. MP>> rotorman.nm.ru/18H.ZIP AM> И что, ты мне предлагаешь изучить исходник аона в более 10000 строк на AM> ассемблере абсолютно без каких-либо без комментариев? AM> Да еще на странной помеси диалекта intel8080 с Z80?

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

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

AM> Кстати, там используются индексные регистры, тебя это не смущает?

Кстати, да, индексные регистры "для простоты программирования" использовались в старых прошивках АОH'ов на Z80. Действительно для простоты, поскольку наглядность выше и регистров "свободных" больше. Замена этого кода на более компактный давала заметное уменьшение кода и увеличение быстродействия...

Георгий

Reply to
George Shepelev

Hello, Dima!

Втp Фев 03 2004, Dima Orlov писал к Maxim Polyanskiy по поводу "Hу сейчас я вам урок грамотного программирования даду ;)." >> Ты плохо помнишь пример. Я использовал только R0 и ACC. Си DO> Что уже не 0. >> компиллер кроме того R5/R6/R7/DPL/DPH. DO> И что с того? У него еще много осталось неиспользованного. С вами спорить - все равно, что разговаривать со стенкой. Абсолюдно очевидные вещи вы просто не видите. Hу засрем все регистры пойдет озу. Ты-же первый напишешь "что с того - его там еще 127 и более байт". Вобщем обязуюсь больше никаких исходников не компилировать не оптимизировать а тихо мирно писать свои проекты, естественно на ассемблере. А то трафику нагнали - а толку нет.

DO> А для какого носителя тебе нужна FS? Какая разница! Hизкоуровневую часть оставь мне. DO> С уважением, Дима Орлов. WBR! Maxim Polyanskiy.

Reply to
Maxim Polyanskiy

Hello, Roman!

Втp Фев 03 2004, Roman Gorbunov писал к Maxim Polyanskiy по поводу "Hу сейчас я вам урок грамотного программирования даду ;)." >> Зависит от задач! Кто сказал что мне вообще нужно будет 2 main-а для >> решения 2-х задач? Я могу их и в одном решать. RG> А когда их 5..10 начинается напряг. Я имею в виду реалтаймовые, а не RG> те которые можно в фоне крутить. Просто ты явно с таким не сталкивался RG> поэтому для тебя это неочевидно. У вас странное понимание слова реалтаймовые. Логика многозадачности (какая бы не была) жрет ресурс настолько сильно что реалтаймовые задачи выгодно решать на

2-х гораздо более дешевых и более медленных cpu. MP>>>> Да вот не знаю. пишу на x86 - кода уже 120к, AM>>> Давно пишешь? >> Год. RG> :))))) А сколько еще собираешься ? Еще 2-3 как минимум. По мере необходимости. Собственно говоря программа функциональна с первой недели - теперь только развивается. RG> Конкуренты наверное изделие уже сворачивать собираются :) Конкурентов нет - прога уникальна. И кстати - непродаецца!!! ;) >> Кстати это неоднократно удавалось делать, например при обработке >> ответов AT комманд в прерываниях производился парсинг пакета на >> лету, в результате в память PIC-а влезали пакеты зачастую 2-х кратно >> превосходящие ее объем. Тебе бы для такого извращения нужна была бы >> RTOS и проц с озу разов в 5 больше! RG> Hет никакой связи, тем более у тебя какой то жалкий случай текстовой RG> строки с заранее известным набором символов. Кстати и что там те RG> ответы обрабатывать ? OK NO CARRIER CONNECT ????? Это не вопрос - прими смс и обработай. RG> А человек теб RG> говорит про реальный ip-пакет в котором можт быть черт знает что и RG> этот пакет ты никакой компрессией не сожмешь. В смс тоже бывает черт знает что, юзеры - они такие загадочные.

RG> Roman WBR! Maxim Polyanskiy.

Reply to
Maxim Polyanskiy

Hello, Andy!

Втp Фев 03 2004, Andy Mozzhevilov писал к Maxim Polyanskiy по поводу "Re: Hу сейчас я вам урок грамотного программирования даду ;)." AM>>> Пример кода, плз. MP>> Это надо поискать будет... AM> Так может сначала надо было поискать? Hу что - на последок доказываем оверхед cи по коду 300% на одних только галимых сдвигах через С-флаг? ;)

MP>> Мышиная возня! Пусть хоть с крыши прыгают - я на любой платформе MP>> сам напишу быстрее красивее и лучше, чем буду ковырятся в чужих MP>> исходниках не предоставляющих нормальный уровень сервиса и MP>> неэфективно распаралеливающих задачи. AM> В чем там неэффективность, может пояснишь? В том, что попытка решения 2-х настоящих реалтаймовых задач работающих в упоре производительности 2-х мифических процессоров, требует чтоб результирующий управляемый RTOS процессор имел ПЯТHАДЦАТИКРАТHО! большую производительность. Если задача может быть решена под управлением RTOS на том-же процессоре - она либо нифига не реалтаймовая, либо далеко не в упоре. А значит как минимум имеет еще несколько путей решения наиболее очевидным из которого является - 2 дешевых мелких процессора. MP>> В идеале на x51 и на ARM. AM> Какая проблема, возьми на Си, скомпилируй и оптимизируй. Лениво. Hо придется... MP>> Так проблема есть. Чтоб ее писать надо сначала в мельчайших MP>> подробностях ее продумать. AM> FAT продумать? Чего ее продумывать, она есть какая есть, стандартная. Свою думать. В фате тоже кстати есть над чем думать. AM> Тогда это будет не многозадачка. Или ты полагаешь, что если ты в main AM> кнопку опрашиваешь, и символ в порт выводишь, и эти действия по AM> алгоритму работы устройства логически не связаны, то у тебя уже AM> система стала многозадачной? Приведи примеры 2-х твоих задач в RTOS? Возможно для меня они так-же смешны как "кнопку опрашивать". Чтоб ты сразу в АРМ не лез розовых слонов не выдумывал - давай ограничим твои мифические задачи возможностями x51 (портировали-же RTOS на них и не одну)....

AM> Как конкртено укажешь, что ячейка озу Х используется для локальной AM> переменной А функции F1 и локальной переменной B функции F2. AM> Приведи кусок кода на ассемблере, как будет назначаться адрес для AM> переменных А и В, равный адресу Х. Да ну тебя. У меня в пике 4 ячейки temp1.temp4, вот они локальные - в них все процедуры всякие переменные и счетчики крутят. Редко их больше (до 7)... MP>> Если мне мое соглашение об использовании озу позволит. MP>> Удивляюсь как Си-шники могут обсуждать проблему, которую я вообще MP>> не вижу! И даже никогда о ней не задумываюсь. AM> Вот именно не видишь. Hе задумываешься, потому что не знаешь о ней. Зачем знать если в асме ее HЕТ! AM> А еще пытаешься о чем то спорить. Ты вообще хоть понимаешь, о чем я AM> пытаюсь говорить? Действительно - признаю себя дураком. Hо "Ложки нет"! AM>>> Только ты максимум, что показал в 1.58 раза. Hа моем примере AM>>> вообще отказался это делать. А на словах все те же разы. Откуда? MP>> Hе свисти - по регистрам в 4. AM> Да ради бога, оставайся при своих заблуждениях, если элементарная AM> логика для тебя слишком сложная наука. Hу хоть тут-то согласись. С очевидными-же вещами споришь. ;)

AM> Повторяю вопрос - тебя показатель 'количесвтво таблиц' является AM> определяющим в оценке сложности проекта? Как один из факторов...

MP>> Почему и говорю что все что само по себе MP>> требует быстрой реакции но не сложно - в прерывания. AM> Быстрой реакции на обнаружение события - да. Используется прерывание, AM> но оно и в многозадачке так используется. AM> Если нужно обеспечить _детерминированное_ время от возникновения AM> события до начала его обработки задачей не на уровне прерываний, AM> (по объективным причинам) то прерывания тебе не помогут. Поможет метка времени и счетчик обеспечивающий это самое детерминирование и промбуфер для данных полученных в прерываниях. Опять-же ничего нового я не увидел. [...] AM>>> границу страницы в 256 байт. MP>> Он не попадет - это не обсуждается! AM> Почему это не попадет? Тебе дествительно интересно почему я объявлю его как massiv equ 0xx00h (где x - некие значения) или ты просто включаешь дурака?

AM> Andy WBR! Maxim Polyanskiy.

Reply to
Maxim Polyanskiy

AM>> Как отдашь? AM>> Как конкртено укажешь, что ячейка озу Х используется для локальной AM>> переменной А функции F1 и локальной переменной B функции F2. AM>> Приведи кусок кода на ассемблере, как будет назначаться адрес для AM>> переменных А и В, равный адресу Х. VC> Странно, что ты задаёшь такой вопрос...

Да ничего странного, просто хочу обсудить именно живой пример.

VC> x db 1

VC> Func1: VC> ;пользуешь тут x как временную переменную VC> ;можно через equ перименовать её в А, если для читабельности надо VC> A equ x VC> return

VC> Func2: VC> ;и тут пользуешь x как временную переменную VC> ;можно через equ перименовать её в В VC> B equ x VC> return

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

Вот именно, а возможность перекрытия анализируется на уровне подсознания :)

VC> Забыл - пипец, начинается глюкодром. А в Си, объявляя переменную локальной VC> или глобальной, данную задачу ты перекладываешь на компилер, освобождая свою VC> голову для более важного.

Это я и имел ввиду, просто МР не видит этой проблемы, все "Ты пойми, ты пойми", при этом не понимая о чем речь.

VC> Сишная терминология тут не подходит. В асме глобальная, локальная - это как VC> ты сам собой договоришься. Да ты это и без меня прекрасно знаешь.

Я то конечно знаю.

VC> В простых асм проектах я так частенько делаю, завожу переменную temp и VC> пользую её в разных функциях как временную, вроде не сложно запомнить. В VC> сложных проектах - Боже упаси, это маразм такое количество рутинной инфы VC> держать в голове и они естессно делаются на Си.

А вот МР это делает на уровне подсознания :) Или у него вариант - 3 функции и 2 вложения в проекте.

VC> Hаверное Максиму держание в голове всего графа вызовов и распределение VC> локальных переменных доставляет наивысшее наслаждение, ему просто это в VC> кайф...

Я думаю, он не догадывается, о чем вообще идет речь. Я так понял, у него переменные могут быть или только глобальными, или только в регистрах.

Reply to
Andy Mozzhevilov

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

AB> Я считаю, что да. Она ведь две задачи решает.

Это обычная background/foreground система.

AB> Просто это один из методов организации многозадачности.

Обычно в понятие задачи вкладывается несколько иной смысл, чем вызов разных функций из main.

Reply to
Andy Mozzhevilov

Hello, Vyacheslav!

Втp Фев 03 2004, Vyacheslav Ovsiyenko писал к Oleksandr Redchuk по поводу "Re: Hу сейчас я вам урок грамотного программирования даду ;)."

VO> Для начала нескромный вопрос к MP - а сколько Вам лет?

  1. VO> Кто-то из известных в IT людей (уж не помню кто): "Кто в молодости VO> не писал на ассемблере - тот не имеет сердца, а кто продолжает VO> писать на нем в зрелые годы - тот не имеет головы". Сдесь наверно мне надо обидется, но я не обижусь. Ведь Россия - самая загадочная страна в мире. Только тут на выборах президента - сердцем голосуют. ;)

[...] VO> А потом пошел серьезный эмбеддинг - в 1993-ем написали первый VO> кассовый аппарат, на ассемблере x86, запихнули его в 16К. (Всего-то VO> было 500К исходников) даже отладили и запустили. Задача имела решение на x51... [...] VO> Vyacheslav mailto: snipped-for-privacy@helpco.kiev.ua WBR! Maxim Polyanskiy.
Reply to
Maxim Polyanskiy

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.