-
- На, лентяй MBedder(2668 знак., 18.10.2008 16:59)
- если int по умолчанию знаковый, тогда так: leon_(811 знак., 11.10.2008 16:50)
- я думаю многим будут полезны эти макросы кто мк поближе рассматривает ) - whale(11.10.2008 17:09)
- Добавил в свой пост вариант leon'а для signed int и увековечил в "Исходниках" --> - MBedder(11.10.2008 19:53, ссылка, ссылка)
- а если еще и коэффициент знаковый, тогда так: leon_(1923 знак., 16.10.2008 01:32)
- И по большому счету, коэффициент не обязан быть постоянным, просто он действительный 16-разрядный с фиксированной точкой перед самым старшим битом. Для знакового кэффициента тоже самое, только в дополнительном коде (самый старший бит - знаковый). - leon_(16.10.2008 01:51)
- Разумеется - просто вместо констант в регистры грузить переменную, содержащую коэффициент. Но у тебя там принципиальная ошибка - xMULSx работает только с r16..r23. Я все передоработал на FMULS (для k=+-1) и положил в SRC --> - MBedder(16.10.2008 04:47, ссылка)
- Где-то так, возможно я неправ. Правильно-работающие фрагменты кода с пояснениями. leon_(8020 знак., 24.10.2008 00:38)
- Нельзя смешивать команды MULx и FMULx без учета того что FMULx еще дополнительно сдвигает результат влево на один бит, и точность правильнее указывать не в процентах, а в количествах младших разрядов. Свой вариант, если успею, выложу позже. - leon_(19.10.2008 12:49)
- Именно поэтому я и применил FMULx вместе с MULx - все учтено, можешь проверить с любыми N и K. И точность в LSB выражать нет смысла - в зависимости от N и K получатся разные значения. Проценты рулят - MBedder(19.10.2008 13:26)
- Вот два примера, когда Ваша подпрограмма, выставленная в исходниках, работает неправильно. leon_(4733 знак., 23.10.2008 16:03, ссылка, ссылка)
- Спасибо, позже перепроверю/доработаю - MBedder(22.10.2008 16:24)
- Вот еще пример, как другая Ваша подпрограмма из этих-же исходников дает неверный результат leon_(3887 знак., 23.10.2008 12:35, ссылка, ссылка)
- Тогда доработай "мои" исходники и выложи в отдельном посте, а я заменю мой прежний файл в "исходниках" - не хочу заново писать каменты - MBedder(24.10.2008 00:33)
- Я не смогу, к сожелению, сделать это нормально на английском. Можно разве-что оформить все подпрограммами и добавить программу их тестирования. Или может все оставить как есть. Как лучше сделать? - leon_(24.10.2008 01:41)
- Возьми из "Исходников" мой текст и замени на доработанный, а каменты оставь прежние - MBedder(24.10.2008 01:53)
- Сделал - leon_(27.10.2008 17:00)
- Сделал новой темой. Коментарии на русском оставил, для примера, как можно интерпретировать шестнадцатиричные данные. - leon_(24.10.2008 03:19)
- Возьми из "Исходников" мой текст и замени на доработанный, а каменты оставь прежние - MBedder(24.10.2008 01:53)
- Я не смогу, к сожелению, сделать это нормально на английском. Можно разве-что оформить все подпрограммами и добавить программу их тестирования. Или может все оставить как есть. Как лучше сделать? - leon_(24.10.2008 01:41)
- Тогда доработай "мои" исходники и выложи в отдельном посте, а я заменю мой прежний файл в "исходниках" - не хочу заново писать каменты - MBedder(24.10.2008 00:33)
- А разное колич бит получается из-за неправильной подпрограммы. - leon_(21.10.2008 12:56)
- При умножении например 100 на 0,001, какая точность результата в % будет? - leon_(21.10.2008 12:41)
- Будет время, обязательно проверю и возможно найду N и K которые дают неверный результат. - leon_(19.10.2008 16:23)
- Вот два примера, когда Ваша подпрограмма, выставленная в исходниках, работает неправильно. leon_(4733 знак., 23.10.2008 16:03, ссылка, ссылка)
- Именно поэтому я и применил FMULx вместе с MULx - все учтено, можешь проверить с любыми N и K. И точность в LSB выражать нет смысла - в зависимости от N и K получатся разные значения. Проценты рулят - MBedder(19.10.2008 13:26)
- Да уж, регистры не те. - leon_(16.10.2008 09:07)
- Разумеется - просто вместо констант в регистры грузить переменную, содержащую коэффициент. Но у тебя там принципиальная ошибка - xMULSx работает только с r16..r23. Я все передоработал на FMULS (для k=+-1) и положил в SRC --> - MBedder(16.10.2008 04:47, ссылка)
- И по большому счету, коэффициент не обязан быть постоянным, просто он действительный 16-разрядный с фиксированной точкой перед самым старшим битом. Для знакового кэффициента тоже самое, только в дополнительном коде (самый старший бит - знаковый). - leon_(16.10.2008 01:51)
- "movw r6,r0" можно заменить на "mov r7,r1", экономим регистр. - leon_(16.10.2008 01:13)
- Верно - MBedder(16.10.2008 01:37)
- Не ожидал такого оперативного ответа. Что не спится то? - leon_(16.10.2008 01:53)
- Позже встанешь - позже ляжешь :)) - MBedder(16.10.2008 02:03)
- Не ожидал такого оперативного ответа. Что не спится то? - leon_(16.10.2008 01:53)
- Верно - MBedder(16.10.2008 01:37)
- Баловство это, на С надо делать без проблем. А экономия тактов/циклов при 16 млн операций/сек не имеет смысла. - Михаил Е.(12.10.2008 16:10)
- Каждый сам себе Петлюра. На С невозможно использовать все преимущества регистровой архитектуры МК - первый пример leon'а весьма показателен --> - MBedder(12.10.2008 17:06, ссылка)
- А оно надо, использовать все преимущества? Из любви к искусству признаю, красиво. Но для практики С круче. Все эти макросы - попытка сделать из асма язык высокого уровня (например С). - Михаил Е.(12.10.2008 17:16)
- В обсуждаемой теме нет ни одного макроса - это архитектурно оптимальная реализация искомых функций, а не макросы. Я на чистом ассемблере уделывал, уделываю, и всегда буду уделывать любого сишника в разы и более - примеров приводилось предостаточно - MBedder(12.10.2008 17:21)
- А если не заниматься растягиванием вечного бояна С <-> Asm, и делать на каждом языке то, для чего он презназначен, то будет еще круче. - Evgeny_CD(12.10.2008 17:25)
- Языки не предназначены ни для чего конкретного. А вот МК предназначены для построения совершенно конкретных классов устройств, и в этих классах никакой другой метод программирования, кроме ассемблера, не оптимален - MBedder(12.10.2008 17:41)
- Блин, упрямый почти как я. Короче, с меня столик в ресторане, спасибо за помощь. Договорились? - Михаил Е.(12.10.2008 17:58)
- Я столько не выпью :)) - MBedder(12.10.2008 18:24)
- Блин, упрямый почти как я. Короче, с меня столик в ресторане, спасибо за помощь. Договорились? - Михаил Е.(12.10.2008 17:58)
- Все языки предназначены для одного и того же. - Михаил Е.(12.10.2008 17:32)
- Языки не предназначены ни для чего конкретного. А вот МК предназначены для построения совершенно конкретных классов устройств, и в этих классах никакой другой метод программирования, кроме ассемблера, не оптимален - MBedder(12.10.2008 17:41)
- Уделывать в чем? В производительности написания программы - не верю. А красота программного решения заказчику по барабану. - Михаил Е.(12.10.2008 17:25)
- И в производительности написания, и в забивании гвоздей молотком вместо привычного микроскопа, и т.д. и т.п. В головах сишников такое не укладывается, но это факт - MBedder(12.10.2008 17:36)
- Да ну, что ты так нас классифицируешь - сишники? Писал много лет на асме, а еще раньше в кодах PDP-11 прямо из ума (если он еще у меня остался) :)))))) - Михаил Е.(12.10.2008 17:40)
- Да ради бога - я ведь не веду речь о компьютерном программировании, а говорю про МК. Их взялись программировать компьютерные программисты, и в 99% случаев на результаты их мазохизма без слез смотреть невозможно - MBedder(12.10.2008 17:43)
- Смотреть то да, но бабки тем не менее они зарабатывают, и заказчики довольны. - Михаил Е.(12.10.2008 17:47)
- А я зарабатываю гораздо больше, ибо пишу на ассемблере. Точка. - MBedder(12.10.2008 17:57)
- Ты зарабатываешь не потому что пишешь на асме, а потому что у тебя так мозги устроены. Асм здесь не причем. - Михаил Е.(12.10.2008 18:06)
- Патамушта их наверняка тоже на ассемблере написали :)) - MBedder(12.10.2008 18:20)
- Я не волшебник, я еще только учусь:)))))) - Михаил Е.(12.10.2008 18:00)
- Ты зарабатываешь не потому что пишешь на асме, а потому что у тебя так мозги устроены. Асм здесь не причем. - Михаил Е.(12.10.2008 18:06)
- А я зарабатываю гораздо больше, ибо пишу на ассемблере. Точка. - MBedder(12.10.2008 17:57)
- Смотреть то да, но бабки тем не менее они зарабатывают, и заказчики довольны. - Михаил Е.(12.10.2008 17:47)
- Да ради бога - я ведь не веду речь о компьютерном программировании, а говорю про МК. Их взялись программировать компьютерные программисты, и в 99% случаев на результаты их мазохизма без слез смотреть невозможно - MBedder(12.10.2008 17:43)
- Да ну, что ты так нас классифицируешь - сишники? Писал много лет на асме, а еще раньше в кодах PDP-11 прямо из ума (если он еще у меня остался) :)))))) - Михаил Е.(12.10.2008 17:40)
- И в производительности написания, и в забивании гвоздей молотком вместо привычного микроскопа, и т.д. и т.п. В головах сишников такое не укладывается, но это факт - MBedder(12.10.2008 17:36)
- А если не заниматься растягиванием вечного бояна С <-> Asm, и делать на каждом языке то, для чего он презназначен, то будет еще круче. - Evgeny_CD(12.10.2008 17:25)
- В обсуждаемой теме нет ни одного макроса - это архитектурно оптимальная реализация искомых функций, а не макросы. Я на чистом ассемблере уделывал, уделываю, и всегда буду уделывать любого сишника в разы и более - примеров приводилось предостаточно - MBedder(12.10.2008 17:21)
- А оно надо, использовать все преимущества? Из любви к искусству признаю, красиво. Но для практики С круче. Все эти макросы - попытка сделать из асма язык высокого уровня (например С). - Михаил Е.(12.10.2008 17:16)
- Каждый сам себе Петлюра. На С невозможно использовать все преимущества регистровой архитектуры МК - первый пример leon'а весьма показателен --> - MBedder(12.10.2008 17:06, ссылка)
- а если еще и коэффициент знаковый, тогда так: leon_(1923 знак., 16.10.2008 01:32)
- Добавил в свой пост вариант leon'а для signed int и увековечил в "Исходниках" --> - MBedder(11.10.2008 19:53, ссылка, ссылка)
- я думаю многим будут полезны эти макросы кто мк поближе рассматривает ) - whale(11.10.2008 17:09)
- если int по умолчанию знаковый, тогда так: leon_(811 знак., 11.10.2008 16:50)
- На, лентяй MBedder(2668 знак., 18.10.2008 16:59)