|
Закольцевать данные, программа на Си |
|
|
|
 |
Ответов
|
Jun 9 2014, 22:27
|
Местный
  
Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940

|
Цитата но совать его везде "потому что микроконтроллер" абсолютно ни к чему. Я не сую везде, и размеры буфера в основном степени двойки. Конечно зависит от задачи, но программист должен представлять в какие инструкции, хотя бы примерно, будет компилироваться его код и к чему это приведет. Обработка по маске - это всегда одинаковое постоянное время обработки данного участка кода. Длительность обработки по условию меняется в зависимости от ветки по которой пройдет исполнение.
|
|
|
|
|
Jun 10 2014, 01:47
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 13-09-12
Пользователь №: 73 530

|
Как раз таки я прекрасно представляю, что будет в моем случае (ARM). В случае использования маски получиться одна инструкция AND, в случае использования условия мы получим CMP, IT и MOV, это если у нас Thumb2. Если же у нас ARM набор инструкций, то IT не будет. Выходит для распространенных МК на базе Cortex-M и ARM7 использование условия в худшем случае увеличит время исполнения на два такта, при этом время выполнения в обоих случаях будет постоянным. Так вот, какие бы оптимизации мы не пытались сделать, два такта - это НИЧТО. Они потонут в тактах, требуемых на вызов функции, на работу со стеком, на обращение к переменной в RAM. В конце-концов у нас тут не DSP, где пару тактов может и сделали бы погоду. Более простые МК на базе других архитектур могут сгенерировать на месте условия какой-нибудь условный переход. Да, в этом случае тактов будет больше, но опять же не настолько больше, чтобы на это обращать внимание.
Это называется переоптимизация. Я сам раньше грешил этим, но теперь отношусь к таким вещам попроще. В конце концов, если от увеличения времени исполнения участка кода всего на пару тактов программа перестает работать, или работает не правильно - то это явные архитектурные проблемы, означающие, что вы рассматриваете микробов через молоток. Нужны такты - есть всякие FPGA и DSP.
|
|
|
|
Сообщений в этой теме
Dubov Закольцевать данные Jun 3 2014, 05:09 menzoda Вместе с указателем на данные передавать указатель... Jun 3 2014, 05:59 Dubov Цитата(menzoda @ Jun 3 2014, 14:09) Вмест... Jun 3 2014, 06:38  megajohn Цитата(Dubov @ Jun 3 2014, 14:48) В идеал... Jun 3 2014, 06:42   Dubov Цитата(megajohn @ Jun 3 2014, 14:52) ну д... Jun 3 2014, 06:47    _pv Цитата(Dubov @ Jun 3 2014, 17:57) прошу п... Jun 3 2014, 07:43    megajohn Цитата(Dubov @ Jun 3 2014, 14:57) прошу п... Jun 3 2014, 07:50    mdmitry Цитата(Dubov @ Jun 3 2014, 14:57) прошу п... Jun 3 2014, 08:29  menzoda Цитата(Dubov @ Jun 3 2014, 14:48) допусти... Jun 3 2014, 08:18 mempfis_ Цитата(Dubov @ Jun 3 2014, 12:19) Имеется... Jun 3 2014, 06:02 MaxiMuz Цитата(mempfis_ @ Jun 3 2014, 13:12) Функ... Jun 3 2014, 07:30  mempfis_ Цитата(MaxiMuz @ Jun 3 2014, 14:40) Тольк... Jun 3 2014, 08:13   MaxiMuz Цитата(mempfis_ @ Jun 3 2014, 15:23) Тогд... Jun 5 2014, 08:15    megajohn Цитата(MaxiMuz @ Jun 5 2014, 16:25) тот ж... Jun 5 2014, 08:24     mempfis_ Цитата(megajohn @ Jun 5 2014, 15:34) авта... Jun 5 2014, 09:34      menzoda Цитата(mempfis_ @ Jun 5 2014, 17:44) Тогд... Jun 5 2014, 15:17 Voldemari4 Можно сделать указатель типом BYTE. Если размер ма... Jun 3 2014, 07:43 x893 а может просто код посмотреть ?
1. http://c.learn... Jun 5 2014, 09:15 alexeyv ЦитатаДа в них и так нет необходимости. Что все пр... Jun 9 2014, 01:14 Сергей Борщ Цитата(alexeyv @ Jun 9 2014, 08:24) Видат... Jun 9 2014, 02:36 Genadi Zawidowski ЦитатаТак и обрабатывать. В цикле проверять не дош... Jun 12 2014, 20:37
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|