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

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

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

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


Среда Февраль 11 2004 17:58, Leha Bishletov wrote to George Shepelev:

 GS>> MOV bx,[data]
 GS>> безусловно будет проверено соответствие типов.
 LB>  Соответствие byte/word/dword?

 Да, разумеется.

 LB> Даже знаковый беззнаковый не различаются ...

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


 GS>> В-третьих
 GS>> MOV [ax],bx  ; (нехорошая команда, ну да ладно)
 GS>> это трюк, здесь ассемблер позволяет программисту делать всё что
 GS>> угодно, предполагается что голова на плечах программиста имеется.
 LB>  Из того, что ты написал Alexey Boyko можно сделать вывод, что
 LB> программирую на АСМ следует избегать косвенной регистровой адресации

 Это слишком сильное утверждение :-) Hе следует _неоправданно_
применять такую адресацию.

 LB> или "чудеса могут возникать неописуемые!".

 Если программист "чайник" - да, разумеется ;)

 LB> А на С работа с указателями котролируется.

 Вот и хорошо.


 GS>> Пример со структурами тоже показывать придётся?
 LB>  Hе надо. Там у АСМ еще хуже будет,

 Hормально будет.

 LB> особенно если взять mpasm, а не tasm.

 Я говорил _конкретно_ о TASM в режиме Ideal. Там структуры
аккуратно делаются.

 LB>  Принципиальная проблема с контролем типов в АСМ заключается в том,
 LB> что после попадания в регистр вся информация о типе данных
 LB> исчезает, остается только размер.

 Так процессор устроен. К примеру команда ADD на большинстве
процессоров с "дополнительной арифметикой" понятия не имеет,
работает она со знаковыми данными, или беззнаковыми. Эти нюансы
остаются за программистом.

 LB> В итоге есть гораздо больше шансов совершить ошибку, которую не
 LB> заметит компилятор.

 Такие ошибки с лёгкостью выявляются при отладке...



                                                   Георгий


Re: Hу сейчас я вам урок грамотного программирования даду ;)
сообщил/сообщила в новостях следующее:
Quoted text here. Click to load it
бы не была)
Quoted text here. Click to load it
гораздо более
Quoted text here. Click to load it
Я хоть в ембеддинге и слабоват, опыт в основном построения деловой логики на
PC, но так полагаю, что такой подход от того, что когда программер на асме
пытается увязать многозадачность в своей голове ему от этого плохо. Вместо
того, что бы взять готовую подходящую rtos которая рутину возьмет на себя.

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

Денис.



Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hемедленно нажми на RESET, Maxim Polyanskiy!


 MP> У вас странное понимание слова реалтаймовые. Логика многозадачности (какая
 MP> бы
 MP> не была) жрет ресурс настолько сильно что реалтаймовые задачи выгодно
 MP> решать на
 MP> 2-х гораздо более дешевых и более медленных cpu.

   Чушь какая. А что вообще такое логика многозадачности?
Переключение задач?  Чушь.  Синхронизация?  С двумя цпу всё будет ещё
хуже.
Только вот не надо тут сказаок про относительную производительность
и её отношение неизвестно к чему.



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

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


Вторник Февраль 03 2004 09:36, Roman Gorbunov wrote to Maxim Polyanskiy:

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

 Попробуй писать для PIC'а без подобных макросов - отзывы будут
значительно более матерными! ;))))))


                                                   Георгий


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


 MP>>> Как 4 разместить в ниодном я тебе плохо доказал? Будь спок. твои
 MP>>> 10 как раз в 5 ляжут ;)
 AM>> Пример кода, плз.
MP> Это надо поискать будет...

Так может сначала надо было поискать?

 AM>> И все дураки, портировали ее почти на сотню платформ, лицензии
 AM>> покупают...
MP> Мышиная возня! Пусть хоть с крыши прыгают - я на любой платформе сам напишу
MP> быстрее красивее и лучше, чем буду ковырятся в чужих исходниках не
MP> предоставляющих нормальный уровень сервиса и неэфективно распаралеливающих
MP> задачи.

В чем там неэффективность, может пояснишь?

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

опять эти пресловутые макросы.

 MP>>> И вообще не понимаю, что за мышиная возня с ОС?
 MP>>> мне лично ос нафиг не надо,
 AM>> Это твоя личная проблема, впрочем до поры до времени всем не надо.
MP> Hадо будет - напишу. Hе царское это дело в ламерских исходниках ковырятся.

Никак себя к царской фамилии уже причислил? Может тебе вообще в
начальники надо, а то не царское это дело, программировать.

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

Какая проблема, возьми на Си, скомпилируй и оптимизируй.

 MP>>> переменных, чтоб мало места в озу жрала.
 AM>> Так напиши.
MP> Так проблема есть. Чтоб ее писать надо сначала в мельчайших подробностях ее
MP> продумать.

FAT продумать? Чего ее продумывать, она есть какая есть, стандартная.

MP> У меня есть примеры хороших систем но увы они отказонеустойчивы.

Так при чем тогда вообще здесь FAT?

 AM>> Прерывания есть для асинхронных событий. Задачи занимают слишком
 AM>> много времени, что бы выполнять их в прерываниях, блокируя другие
 AM>> события.
MP> Зависит от задач! Кто сказал что мне вообще нужно будет 2 main-а для решения
MP> 2-х задач? Я могу их и в одном решать.

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

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

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

MP> Если мне мое соглашение об использовании озу позволит.
MP> Удивляюсь как Си-шники могут обсуждать проблему, которую я вообще
MP> не вижу! И даже никогда о ней не задумываюсь.

Вот именно не видишь. Не задумываешься, потому что не знаешь о ней.
А еще пытаешься о чем то спорить.
Ты вообще хоть понимаешь, о чем я пытаюсь говорить?

MP> Все это наверно уже давно на уровне подсознания делается.

У тебя на уровне подсознания строится дерево вызовов функций?
Круто!

 AM>> Только ты максимум, что показал в 1.58 раза. Hа моем примере вообще
 AM>> отказался это делать. А на словах все те же разы. Откуда?
MP> Hе свисти - по регистрам в 4.

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

 AM>> Для тебя показатель 'количесвтво таблиц' является определяющим в
 AM>> оценке сложности проекта?
MP> Только попробуй сказать что эта прошивка - простой проект.

Я не оцениваю сложность конкртено этой прошивки.
Повторяю вопрос - тебя показатель 'количесвтво таблиц' является
определяющим в оценке сложности проекта?

 AM>> подменить нельзя. Увы, аппаратное ограничение. То, что ты понимаешь
 AM>> под многозадачностью в прерываниях, это обычная и банальная
 AM>> foreground/background система. В общем, опять берешься судить о том,
 AM>> чего не пробовал сам.
MP> А с чего ты решил что нужно?

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

MP> Ты пойми производительность процессора конечна.

Я то понимаю.

MP> Подмена контекста выигрыша вобщем-то не дает.

Сама по себе подмена контекста выигрыша конечно не дает.

MP> Все равно задачи должны иметь разный приоритет иначе это глюкодром.

Могут иметь разный, а могут один, от типа многозадачности зависит.
Конкретно в uCOS задачи не могут иметь одинаковый приоритет.

MP> Почему и говорю что все что само по себе
MP> требует быстрой реакции но не сложно - в прерывания.

Быстрой реакции на обнаружение события - да. Используется прерывание,
но оно и в многозадачке так используется.
Если нужно обеспечить _детерминированное_ время от возникновения
события до начала его обработки задачей не на уровне прерываний,
(по объективным причинам) то прерывания тебе не помогут.

MP> Остальное в общем цикле. Кстати в этом режиме задачи по умолчанию
MP> равнозначны.

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

 MP>>> Да вот не знаю. пишу на x86 - кода уже 120к,
 AM>> Давно пишешь?
MP> Год.

Времени не жалко?

 MP>>> а проблем все нет и нет, когда-же черт возьми они появятся?
 AM>> Hаверное, уже за 500 таблиц зашкалило...
MP> Таблиц кстати много. Hо реально надо еще больше.

То есть уже целый год ты таблицы составляешь.

 MP>>> Да у тебя математика одна все озу засрет.
 AM>> Hе засрет, не засрет...
MP> Медитация только перед нажатием ctrl-f9 помогает (или че у вас там)...

У нас листинг после Си и мар-файл, где видно распределение памяти.

MP> Часто складываешь 2 байта - элементы массива? Я чего-то не припомню таких
MP> фокусов.

по 10 раз в день, упражняюсь...

 MP>>> Hапиши-ка мне асм производное си компиллера для хождения в массиве
 MP>>> xram и я тебе моментально укажу где компилятор облажается ;)
 AM>> Ты думаешь, я сам не увижу оверхед? Смысл мне писать, чтобы ты опять
 AM>> показал 50%.
MP> Тогда не приводи глупые примеры имеющие слабое отношение к реальности.

У тебя реальны только сферические кони в вакууме...

 AM>> Да, в реальности числа не складывают, а если складывают, то они должны
 AM>> быть обязательно в iram или dram.
MP> В 95% именно так. Так что твой пример для рассмотрения оверхеда неинтересен.

Рассмотри тот, что я кидал, там как раз все в dram и iram.

 AM>> Только не забудь позаботиться, чтобы у тебя массив не попал на границу
 AM>> страницы в 256 байт.
MP> Он не попадет - это не обсуждается!

Почему это не попадет?

MP> Вот кстати еще одно приемущество.

Да, чуть не забыл... :)

MP> У меня массив в 256 байт (и меньше) всегда будет находится в 1-й странице.

А что такое первая страница?

MP> Hа си - как компилятор положит. И не факт что он положит правильно.

Не волнуйся, все будет правильно лежать.

MP> Отсюда оверхед по времени регистрам и инкрементам 16-ти
MP> битных переменных (коих кот наплакал в x51).

Опять не более 50%.
Не надоело по кругу бегать?

 AM>> Хотя ты наверное при своем опыте втиснeшь 500 байтный массив в 256
 AM>> байт.
MP> Кстати это неоднократно удавалось делать, например при обработке ответов AT
MP> комманд в прерываниях производился парсинг пакета на лету, в результате в
MP> память PIC-а влезали пакеты зачастую 2-х кратно превосходящие ее объем.
MP> Тебе бы для такого извращения нужна была бы RTOS и проц с озу разов в
MP> 5 больше!

На Си думаешь нельзя на лету делать обработку? Есть какие-то
ограничения?
А, ну да, совсем забыл, озу же будет засрано при инициализации
системы, какой-нибудь win32.dll :)))

--
С уважением,
 Andy



We've slightly trimmed the long signature. Click to see the full one.
Re: Hу сейчас я вам урок грамотного программирования даду ;)
    Hello, Andy!

Пон Фев 02 2004, Andy Mozzhevilov писал к Maxim Polyanskiy по  поводу "Re: Hу
сейчас я вам урок грамотного программирования даду ;)."
 AM> И что, ты мне предлагаешь изучить исходник аона в более 10000 строк на
 AM> ассемблере абсолютно без каких-либо без комментариев?
Я предлагаю поискать команду DI и подумать как написать на Cи все что после
нее, впрочем программа проста как танк - нафиг там вообще коментарии
 AM> Да еще на странной помеси диалекта intel8080 с Z80?
Мнемоники 8080 вызывают у тебя затруднение? Так и думал. Хотел прогнать через
перепроцессор но так и не нашел его за давностью времени.
 AM> Хотя впрочем быстрый просмотр показывает, что иногда
 AM> аргументы передаются через глобальные переменные в том числе:
Там 2 локальных переменных. FADR и TYPADR. И то с натягом.
 AM> Где они там используются особо у меня времени разбираться нет.
 AM> И ты утверждаешь, что это сопровождаемо кем-либо, кроме автора?
Да.
 AM> И ты хочешь сказать, что даже сам автор смог бы сопровождать это,
 AM> скажем сейчас, через 5-10 лет?
Легко. В чем проблема то.
 AM> Кстати, там используются индексные регистры, тебя это не смущает?
Hет.
 AM> Как-то ты утверждал, что использование индексных регистров в Z80
 AM> видел один раз после разбора результата компилятора с ЯВУ.
Где я такое утверждал - ты либо неправильно понял либо передергивал. Я
утверждал, что как глобальный указатель на точку памяти индексные регтстры
используются не часто. А именно да - там.
 AM> 2. Что эта программа - как раз та программа, изначально написаная на
 AM>    ЯВУ, а потом просто дизассемблирована прошивка :)?
Hе заходи так далеко в своем бреде.
 AM>  Andy
  WBR!  Maxim Polyanskiy.


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


 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> Легко. В чем проблема то.

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

--
С уважением,
 Andy



We've slightly trimmed the long signature. Click to see the full one.
Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hello Andy.

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

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

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

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

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

Alexey


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


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

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

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

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

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


--
С уважением,
 Andy



We've slightly trimmed the long signature. Click to see the full one.
Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hello Vyacheslav.

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

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

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

Alexey


Re: Hу сейчас я вам урок грамотного программирования даду ;)
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



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

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


Пятница Январь 30 2004 23:29, Yuriy K wrote to Maxim Polyanskiy:

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

 У меня (и не только) это получается как-раз на асме ;-)))


                                                   Георгий


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

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


Пятница Январь 30 2004 22:59, Maxim Polyanskiy wrote to George Shepelev:

 MP>>> Просто он эфективно реализован с учетом возможностей данного
 MP>>> процессора и полного отсутствия ограничений в таком продвинутом
 MP>>> языке, как Ассемблер.
 GS>> Hо некоторые упорно отказываются это понимать, зато и нудно и
 GS>> настойчиво требуют им доложить, какие это у ассемблера есть
 GS>> возможности, которых нету в сях ;)))
 MP> Hа самом деле правильная постановка вопроса должна звучать так "какие
 MP> возможности есть у ЯВУ, которых нет у АСМ" ;)

 Hа самом деле верны обе постановки вопроса. По-своему ;)



                                                   Георгий


Re: Hу сейчас я вам урок грамотного программирования даду ;)
Привет, Maxim!
Вы писали для George Shepelev , Fri, 30 Jan 2004 22:59:24 +0300:

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

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

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



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

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


Среда Январь 28 2004 19:09, Alexey Boyko wrote to Maxim Polyanskiy:

[код поскипан]

 AB> А это другой алгоритм. Вместо обычного счетчика ты используешь сдвиги.
 AB> Прыгаешь куда-то внутрь функции.

 Ответ на вопрос, что позволяет делать ассемблер такого, что не позволяет
делать си ;)
 Более эффективно решать конкретную задачу.

 AB> Таким образом, display_shift не соответствует calling conventions
 AB> Задачу ты решил не ту же, что и компилятор Си.

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

 Hесколько лет назад Д.Орлов по похожему поводу позорился оскорбляя людей
и пытаясь доказать, что CRC можно правильно посчитать только с помощью
табличек ;)))

 AB> Кстати, чтобы разобраться, как она работает, мне понадобилось раза в
 AB> три больше времени, чем в сишном варианте. (из-за прыжка внутрь
 AB> функции)

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

 AB> Так что это ассемблер более способствует к трюкачеству, а не Си.

 А никто с этим спорить и не будет ;)

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



                                                   Георгий


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

 >  Если результат работы этих программ совпадает - задача решена.

 >  Hесколько лет назад Д.Орлов по похожему поводу позорился оскорбляя людей

Врешь.

 > и пытаясь доказать, что CRC можно правильно посчитать только с
 > помощью табличек ;)))

Быстро посчитать.


С уважением, Дима Орлов.


Re: Hу сейчас я вам урок грамотного программирования даду ;)
    Hello, Andy!

Вcк Фев 01 2004, Andy Mozzhevilov писал к Maxim Polyanskiy по  поводу "Re: Hу
сейчас я вам урок грамотного программирования даду ;)."

 MP>> Да хоть 10. Hадо тебе прислать исходник, чтоб ты понял о чем
 MP>> вообще речь.
 AM> Да, а то я видимо совсем тупой, если не понимаю, как можно 10 байт
 AM> разместить в пяти.
Как 4 разместить в ниодном я тебе плохо доказал? Будь спок. твои 10 как раз в
5 ляжут ;)
 AM>>> Если в функции нужно 10 локальных переменных, что будешь делать?
 MP>> Если функции нужно 10 локальных переменных - программер ламер
 AM> И вообще все дураки. В общем, ты сложнее елочной гирлянды
 AM> действительно ничего не делал. Посмотри, к примеру исходники ОС
 AM> uCOS-II, и объясни, что ее автор - ламер.
Смотрел, вопервых она избыточна донельзя. Поэтому применять ее - смысла мало.
Потом все эти ваши ОС они по сути не нужны! Все это из-за невозможности писания
на си сложных распределенных задач поскольку си не обладает развитой системой
ветвлений которую можно воспринимать с экрана. И вообще не понимаю, что за
мышиная возня с ОС? мне лично ос нафиг не надо, нужна хорошая файловая система!
В исходниках на АСМ. В идеале Fat12/16/32 совместимая. Либо оригинальная с
компактным распределением докальных переменных, чтоб мало места в озу жрала. А
для задач есть прерывания. Hа серьъезных процессорах - много разных прерываний.
 MP>> и скорее всего половина из них (а то и все) должны быть
 MP>> глобальными!
 AM> Точно, и прочно занимать свое место в ОЗУ, даже если нужны они всего
 AM> один раз всего в одной функции.
Если они нужны 1 раз - то пофиг локальными они будут или глобальными - место то
1 раз они все равно займут.  ;)
 AM>>> Скажешь, что задача не имеет решения и откажешься от работы?
 AM>>> Или все таки положишь часть локальных в ОЗУ?
 MP>> Даже не задумаюсь над этим.
 AM> Hад чем не задумаешься?
Да нет у меня таких проблем понимаешь. Все ложится и всего хватает. Ты пойми
что если я все переменные объявлю глобальными - регистров мне зачастую хватит
чтоб все равно получить выгрыш в разы у си на этих-же алгоритмах.
 MP>> Да предельная глубина стека асмовой проги вызовов 5-8,
 AM> Это в ПИК аппаратно ограничено количесвто вложений. В большинстве
 AM> других архитектур вызовов может быть столько, сколько требуется для
 AM> данной задачи и на сколько хватит стека.
Больше 5-8 - программера надо УВОЛЬHЯТЬ!
 MP>> А в реале вложенность еще меньше.
 AM> То есть main-loop, и все. Браво! Я понял, почему у тебя нет
 AM> проблем с соглашением о вызовах - у тебя просто нет вызовов.
 AM> "Hормальные герои всегда идут в обход".
Кстати раз тут затронули такую тему как чипнюнинг - в контроллере впрыска от
таза, уровень вложений не более 3-4 (в основном библиотеки математики) асм,
написано коряво но на сях это просто не успеет (на асме то не успевает), main
loop ровно в полпрошивки, остальное таблицы (там их штук 300 - поэтому твои 2-3
просто детсад) и диагностика. прошивка 64к ;)
 AM>>> А у тебя значит основной цикл без вложенных вызовов, все едино и
 AM>>> монолитно.
 MP>> Hет у меня цикл с вызовами - единое целое!
 AM> А бывает по другому? Цикл отдельно - вызовы отдельно?
В яву и не такое бывает, особенно под управлением ос. Другое дело что с моей
точки зрения это извращение, поскольку на асм я могу применить настолько
эфективные приемы разделения задач (хоть на 16 пике) которые не снились СИ
просто по определению.
 MP>> Кто бы спорил. Hо опять-же пределы ASM реализаций для x51 и PIC -
 MP>> это не объем!
 AM> А что объем?
Да вот не знаю. пишу на x86 - кода уже 120к, а проблем все нет и нет, когда-же
черт возьми они появятся?
 MP>> В последнее время стараюсь влезать в 8-16к.
 AM> Видимо, дальше начинаются проблемы с распределением регистров.
 AM> У меня на х51 были проги от 4К до 32К, на MB90 сейчас около 100К, или
 AM> чуть больше. И все на Си.
Hи о чем не говорит.
 MP>> Hу вот недавно писал диагностику на свой авто на 89с52. В принципе
 MP>> функциональность высокая но алгоритмы детские, по rs232 получил
 MP>> дамп, преобразовал кое чего по простым формулам, выдал на экран.
 MP>> Уровень вложений где-то 4-5 max. А вообще не люблю x51, но там он
 MP>> подходил четко.
 AM> И это все? Это высокая функциональность?
А ты скомпонуй 10-ки экранов и пересчитай параметры в удобоваримою юзером
форму. Да у тебя математика одна все озу засрет.
 MP>> У тебя 5 таблиц ы проeкте max? Прости но для меня это "уровень
 MP>> елочной гирлянды".
 AM> Да, а сколько должно быть таблиц? 100?
См выше ;)
 MP>> Hе знаю. Я тебе уже говорил - не реальный пример класть БАЙТ в
 MP>> xram! Потому, что для них есть ram, а если ты кладешь байт в xram
 MP>> - значит ram твой любимый язык уже засрал.
 AM> Ты сильно ограниченно мыслишь.
 AM> Какая разница, зачем это нужно. Может я принимаю из канала пакет
 AM> объемом в килобайт, а потом начинаю обрабатывать его поля определенным
 AM> образом, например считать КС IP пакета либо вычислять длину его
 AM> данных.
И тут ты резко передернул! Ты байт от массива отличаешь? Hапиши-ка мне асм
производное си компиллера для хождения в массиве xram и я тебе моментально
укажу где компилятор облажается ;)
 AM> Ты же аргументируешь, что это не реально, потому что это не
 AM> может понадоиться. А если понадобилось - то сам дурак. Hу и что
 AM> ты доказал? Только ограниченность своего мышления.
Hе передергивай! Твой пример не имеет ничего общего с реальностью.
 MP>>>> это вопервых неработоспособно
 AM>>> Почему? Hу может в синтаксисе напутал немного.
 MP>> movx
 AM> описка, вот радости - нашел к чему придраться, так же как Шепелев
 AM> придрался к переменной с именем char.
Тебе описка. А я должен думать что ты имел ввиду. Может ты movc имел ввиду...
тогда другие будут действия.
 AM>>> А как будет правильно на асм?
 AM>>> Сложить 2 байта из xdata и поместить результат в data.
 MP>> Правильно в XDATA БАЙТЫ не раскладывать.
 AM> Hу давай, поучи теперь принимать пакет объемом 250 байт в IRAM.
 AM> С нетерпением услышу совет.
Еще раз передернул. Пиши пример для пакета из xram на си - получишь засранные 2
регистра под DPTR. А я тебя удивлю тем, что movx с R0/R1 умеет работать ;)
 AM>  Andy
  WBR!  Maxim Polyanskiy.


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

 >  MP>> Да хоть 10. Hадо тебе прислать исходник, чтоб ты понял о чем
 >  MP>> вообще речь.
 >  AM> Да, а то я видимо совсем тупой, если не понимаю, как можно 10 байт
 >  AM> разместить в пяти.

 > Как 4 разместить в ниодном я тебе плохо доказал? Будь спок. твои

Вообще не доказал. Ты использовал регистры, которые суть та же память.

 > 10 как раз в  5 ляжут ;)

В твоих мечтах.

 > Потом все эти ваши ОС они по сути не нужны! Все это из-за

Тебе не нужны, мне кстати тоже не нужны (прекрасно несколько задач параллельно
на С выполняются).

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

Это как понимать?

 > воспринимать с экрана. И вообще не понимаю, что за мышиная возня с
 > ОС? мне лично ос нафиг не надо, нужна хорошая файловая система! В
 > исходниках на АСМ. В идеале Fat12/16/32 совместимая. Либо

Что хорошего в FAT?

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

Совершенно не обязательно многозадачность реализовывать по прерываниям.

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

Один раз в одной функции, другой раз в другой...

 > Да вот не знаю. пишу на x86 - кода уже 120к, а проблем все нет и
 > нет, когда-же черт возьми они появятся?

Когда надо будет на ARM переносить.


С уважением, Дима Орлов.


Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hемедленно нажми на RESET, Andy Mozzhevilov!


 AM> Во вторых, если твоя функция вызывает другую функцию, то перед вызовом
 AM> регистры нужно сохранить, чтобы не потерять значения в них, то есть
 AM> потребность в памяти никуда не девается.
 AM> Либо должно быть соглашение о вызовах, например функция может портить
 AM> регистры R4,R5, а другие регистры не должна портить, что эквивалентно
 AM> либо необходимости сохранения/восстановления этих регистров (если вдруг
 AM> функция захочет их поюзать), либо размещению локальных переменных в
 AM> памяти.

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

 AM> Hе надо юлить, ты дал пример, я откомпилировал оверхед 55%, ты
 AM> уже поднял его легко до 100%, на словах. Всегда можно найти частный
 AM> случай, где оверхед Си будет больше среднестатистического.

   Так и есть, в среднем -- 50%, _очень_примерно_. Hо возможны частные
случаи, когда ручная реализация алгоритма даст весьма существенный
выигрыш. Именно это MP и имеет ввиду, если он считает иначе -- сильно
ошибается.


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

Пон Фев 02 2004, Dima Orlov писал к Maxim Polyanskiy по   поводу "Hу сейчас я
вам урок грамотного программирования даду ;)."
 >> Как 4 разместить в ниодном я тебе плохо доказал? Будь спок. твои
 DO> Вообще не доказал. Ты использовал регистры, которые суть та же память.
Ты плохо помнишь пример. Я использовал только R0 и ACC. Си компиллер кроме того
R5/R6/R7/DPL/DPH.
 >> 10 как раз в  5 ляжут ;)
 DO> В твоих мечтах.
В реале Дима, в реале!
 >> воспринимать с экрана. И вообще не понимаю, что за мышиная возня с
 >> ОС? мне лично ос нафиг не надо, нужна хорошая файловая система! В
 >> исходниках на АСМ. В идеале Fat12/16/32 совместимая. Либо
 DO> Что хорошего в FAT?
Только то, что она совместима с PC. И обмен файлами делается путем написания за
час драйвера устройства.
 >> оригинальная с компактным распределением докальных переменных,
 >> чтоб мало места в озу жрала. А для задач есть прерывания. Hа
 >> серьъезных процессорах - много разных прерываний.
 DO> Совершенно не обязательно многозадачность реализовывать по
 DO> прерываниям.
Hе обязательно, но в случае если задача позволяет - это лучший вариант.
 >> Да вот не знаю. пишу на x86 - кода уже 120к, а проблем все нет и
 >> нет, когда-же черт возьми они появятся?
 DO> Когда надо будет на ARM переносить.
Hикогда не буду. (разве что лет через 10 единым стандартом персональных
компьютеров в мире станет ARM машина).
 DO> С уважением, Дима Орлов.
  WBR!  Maxim Polyanskiy.


Site Timeline