Rst7 5 24 августа, 2011 Опубликовано 24 августа, 2011 · Жалоба Ну он вроде двигает бесплатно практически в любой команде. К сожалению, при индексации - сдвиг отнюдь не на любое количество бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 24 августа, 2011 Опубликовано 24 августа, 2011 · Жалоба помнится, была тут темка на счет отзеркаливания битов в байте - такого типа задачки предполагаются? ;) если склероз не подводит, самая короткая процедурка в 11 ассемблерных команд вышла (AVR8).... Кстати, а что так много - на пике у меня 5 получилось: movlw 8 Loop: rlcf Source, F rrcf Dest, F addlw 0xFF bnz Loop Чисто 5 минут подумал пока собачку выгуливал. С АВР не знаком, что у них такая система команд плохая, что в два раза больше команд надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 24 августа, 2011 Опубликовано 24 августа, 2011 · Жалоба Кстати, а что так много - на пике у меня 5 получилось: Речь об оптимизации по скорости без использования таблицы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 24 августа, 2011 Опубликовано 24 августа, 2011 · Жалоба Речь об оптимизации по скорости без использования таблицы. тогда 16 - rlcf Source, F rrcf Dest, F ;; повторить 8 раз Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 24 августа, 2011 Опубликовано 24 августа, 2011 · Жалоба тогда 16 - Это метод в лоб. На AVR он тоже, кстати, занимает 16 тактов. Есть способ быстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 24 августа, 2011 Опубликовано 24 августа, 2011 · Жалоба Это метод в лоб. На AVR он тоже, кстати, занимает 16 тактов. Есть способ быстрее. Понял. На пике тоже получилось 11 команд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 29 августа, 2011 Опубликовано 29 августа, 2011 · Жалоба Из книжки выудил: x = (x & 0x55) << 1 | (x & 0xaa) >> 1; x = (x & 0x33) << 2 | (x & 0xcc) >> 2; x = (x & 0x0f) << 4 | (x & 0xf0) >> 4; Будет любопытно взглянуть, что сделает Hi-Tech PICC компилятор. Последнее выражение - одна команда. А как с первыми двумя обойдется? (Проверю сам, позже, сейчас нет времени) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
san822 2 29 августа, 2011 Опубликовано 29 августа, 2011 · Жалоба Потом тоже сделать с портированием JPEG, потом MPEG, потом FS, TCP, кучей войс кодеков и т.д. Это будет и полезно и забавно. Просто рассказы как начал портировать и обломался тоже будут интересны. Ничего себе конкурсы... А чем тогда это будет отличаться от тем типа "подарю проект", которые, кстати, не очень часто появляются на форуме ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 1 30 августа, 2011 Опубликовано 30 августа, 2011 · Жалоба Да ну. Все эти трюки давно собраны тут - http://graphics.stanford.edu/~seander/bithacks.html поглядел на счет реверсирования битов - увы, не все трюки там :) я говорил о реверсировании битов в байте применительно для AVR на асме. то, что по ссылке для AVR будет скомпилировано далеко не в 11 команд Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 31 августа, 2011 Опубликовано 31 августа, 2011 · Жалоба Понял. На пике тоже получилось 11 команд. Не, на пике 12тактов на авр 13 тактов лучше не сделать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 31 августа, 2011 Опубликовано 31 августа, 2011 · Жалоба Не, на пике 12тактов на авр 13 тактов лучше не сделать Лучше можно сделать. Но лучше не делать. :) Берете один восмибитный порт МК и соединяете его с другим в обратном порядке. В один порт пишите, из другого читаете. Итого всего две команды (а не такта). Но очень расточительно с точки зрения использования ног МК... Возможны более "щадящие" варианты, с использованием только одного порта... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCO 0 2 сентября, 2011 Опубликовано 2 сентября, 2011 · Жалоба Итого всего две команды (а не такта). Но очень расточительно с точки зрения использования ног МК... У PIC это одна команда movff Возможны более "щадящие" варианты, с использованием только одного порта... В CPLD и FPGA это вообще не проблема... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 2 сентября, 2011 Опубликовано 2 сентября, 2011 (изменено) · Жалоба У PIC это одна команда movff Одной командой не получится. Почему - подумайте. :) В CPLD и FPGA это вообще не проблема... Это да. Но речь, вроде бы, идет об МК. Изменено 2 сентября, 2011 пользователем @Ark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 4 сентября, 2011 Опубликовано 4 сентября, 2011 · Жалоба У PIC это одна команда movff Команда-то одна, да тактов все равно два. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 4 сентября, 2011 Опубликовано 4 сентября, 2011 (изменено) · Жалоба Команда-то одна, да тактов все равно два. Дело не в тактах. Эта команда сначала читает, а потом записывает. А нужно - все наоборот. Сначала записать данные в порт, а затем извлечь результат из другого порта. Причем, лучше это сделать с некоторой паузой между записью и чтением... Изменено 4 сентября, 2011 пользователем @Ark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться