-
- Не думал что все так буквально воспримут ), имеел в виду как умножить в лоб два байта на любое число от 0 до 0,999 - whale(11.10.2008 13:18)
- на С переходи и не будет таких вопросов. - VAI(11.10.2008 13:33)
- Спрошу проще - что за формат входных/выходных чисел для команды FMUL ? whale(32 знак., 11.10.2008 14:38)
- нашел - whale(11.10.2008 14:49)
- Спрошу проще - что за формат входных/выходных чисел для команды FMUL ? whale(32 знак., 11.10.2008 14:38)
- на С переходи и не будет таких вопросов. - VAI(11.10.2008 13:33)
- Сначал умножить на 8 сдвигами, а потом делить на 10 используя умножение - читайте пост от MBedder'а и тамошние ссылки - Алексей Мусин(11.10.2008 12:03, ссылка)
- Или сразу помножить на 0хCCCD и отбросить млачшеньких два бутеса. - mse(11.10.2008 13:15)
- не катит, число множителя не постоянно - whale(11.10.2008 13:24)
- Представь, что диапазон множителя 0...0.9999 соответствует диапазону 0..65535. Умножай свой int на такой int множитель, и бери только 16 старших бит результата. Множитель задавай как 0.8*65536 или как 8*65536/10, что одно и то же - MBedder(11.10.2008 14:08)
- проще умножить на 0-99 и поделить на 100 тогда - whale(11.10.2008 14:46)
- Правда? А я-то, болван, не знал - и сделал твою задачку за 14 слов/17 тактов :)) --> - MBedder(11.10.2008 15:04, ссылка)
- мда, можешь когда хочешь ) - whale(11.10.2008 15:20)
- И не только. А вот ты научись задавать вопросы четко и обстоятельно, чтобы не вводить людей в заблуждение и не заставлять домысливать недосказанное - глядишь, и ответы будут конструктивнее - MBedder(11.10.2008 15:37)
- вы тут модератором ? - whale(11.10.2008 15:52)
- Именно. Поэтому паапрашу мне не выкать :)) - MBedder(11.10.2008 16:33)
- вы тут модератором ? - whale(11.10.2008 15:52)
- И не только. А вот ты научись задавать вопросы четко и обстоятельно, чтобы не вводить людей в заблуждение и не заставлять домысливать недосказанное - глядишь, и ответы будут конструктивнее - MBedder(11.10.2008 15:37)
- мда, можешь когда хочешь ) - whale(11.10.2008 15:20)
- Правда? А я-то, болван, не знал - и сделал твою задачку за 14 слов/17 тактов :)) --> - MBedder(11.10.2008 15:04, ссылка)
- проще умножить на 0-99 и поделить на 100 тогда - whale(11.10.2008 14:46)
- Представь, что диапазон множителя 0...0.9999 соответствует диапазону 0..65535. Умножай свой int на такой int множитель, и бери только 16 старших бит результата. Множитель задавай как 0.8*65536 или как 8*65536/10, что одно и то же - MBedder(11.10.2008 14:08)
- не катит, число множителя не постоянно - whale(11.10.2008 13:24)
- Или сразу помножить на 0хCCCD и отбросить млачшеньких два бутеса. - mse(11.10.2008 13:15)
- Варианты. leon_(30368 знак., 11.10.2008 11:54)
- брррр ) - whale(11.10.2008 13:20)
- незнаю как сохранить с форматированием - leon_(11.10.2008 11:43)
- Выделить нужный текст и нажать кнопку "Си" или "asm" в заголовке редактора сообщения - MBedder(11.10.2008 18:41)
- на асме - whale(11.10.2008 03:42)
- На, лентяй 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)
- Не думал что все так буквально воспримут ), имеел в виду как умножить в лоб два байта на любое число от 0 до 0,999 - whale(11.10.2008 13:18)