-
- Попробуй и так уже - не обязательно оптимальный для AVR, но без использования внешних переменных (dsp_buf) в теле функции Vit(416 знак., 16.09.2013 17:33 - 17.09.2013 09:37, ссылка, ссылка)
- Удивляюсь вам. У обычного Си приведение к типу void* происходит автоматически. Для чего вы переопределяете тип указателя явно? - Ксения(16.09.2013 23:03 - 17.09.2013 01:36)
- и для чего же??? - Vit(17.09.2013 01:10)
- От strlen() тут проку мало, т.к. она ищет концевой нуль, а буфере этого нет. - Ксения(16.09.2013 21:26)
- тут она считает длину строки и к буферу не имеет отношения - Vit(16.09.2013 22:48)
- За пример strlen благодарю. А то тут мне уже материться обещали, я и постеснялся спросить :) - Mazur(16.09.2013 21:14)
- Удивляюсь вам. У обычного Си приведение к типу void* происходит автоматически. Для чего вы переопределяете тип указателя явно? - Ксения(16.09.2013 23:03 - 17.09.2013 01:36)
- Кстати, а разница между этими двумя вариантами есть? - Bill(16.09.2013 16:26)
- Нет. - Mazur(16.09.2013 17:11)
- while() здесь победил, поскольку такой код ... ближе всего к ассемблеру! :) Именно так бы мы организовали цикл на ассемблере - на убывании счетчика, а не на его возрастании. Так же был когда-то организован цикл на Fortran'е. А у процессоров x86 Ксения(1127 знак., 16.09.2013 15:50 - 15:58)
- Первое на что я обратил внимание в for, что практически во всех примерах инкремент, а не декремент. Хотя декремент выгоден по тактам. Да и по коду. - Mazur(16.09.2013 21:17)
- Так, опять же, цикл и в случае while можно и на возрастание организовать. - Bill(16.09.2013 16:23)
- Плохой пример. Внутри функции отсутствует проверка на выход за границы диапазона массива. Чревато непредсказуемыми глюками. - rezident(16.09.2013 15:18)
- Да, полезно писать assert(n>=0 && n<SIZE); - fk0(16.09.2013 15:20)
- Уууу. >= даст Вам вечность. А n<SIZE спокойно разрешит выход за диапазон (если начальная x=SIZE-2, а n=3). Но Вы правильно мыслите. Здесь ИМХО уместно применить не какие-то левые x и n, а делать ClrStr(from,to). Тогда и проверять диапазон легче. - Юра(16.09.2013 22:58,
)
- Как в моем примере правильно применить? - Mazur(16.09.2013 15:36)
- Не надо вам assert - это лишний код :) - Ксения(16.09.2013 15:57)
- Уууу. >= даст Вам вечность. А n<SIZE спокойно разрешит выход за диапазон (если начальная x=SIZE-2, а n=3). Но Вы правильно мыслите. Здесь ИМХО уместно применить не какие-то левые x и n, а делать ClrStr(from,to). Тогда и проверять диапазон легче. - Юра(16.09.2013 22:58,
- Да, полезно писать assert(n>=0 && n<SIZE); - fk0(16.09.2013 15:20)
- В большинстве CPU есть DJNZ или аналогичная инструкция (DECFSZ и GOTO у PIC, например). Т.е. эффективен будет такой код: fk0(389 знак., 16.09.2013 15:12)
- Просто Мазуру надо в свойствах компилятора включить генерацию асм-файлов и иногда заглядывать, что у него получается. Сравнить, например, что компилер сгенерит на while b на for. - VAI(16.09.2013 17:41)
- В студии есть дизассемблер. Хотя я видел, выложенные листинги, где асм более нагляден. Есть ли в winavr такое? Mazur(88 знак., 16.09.2013 19:06)
- Я тебе уже говорил, как включить листинг в gcc. Твой winavr -- внутри на самом деле это gcc. - fk0(16.09.2013 19:41)
- Ты про это? Ни хрена не изменилось. - Mazur(16.09.2013 19:54, ссылка)
- Оппа. А твоя строчка не сохранилась. - Mazur(16.09.2013 19:55)
- Включил опцию использовать файл такой-то. Строчка осталась. Но результата не вижу. - Mazur(16.09.2013 20:06)
- Проблема большинства современных "программистов", в том, что они не умеют работать с компьютером. Я поэтому и говорю -- изучай как в unix образца 80-х годов всё делалось. Там можно подсмотреть и понять. Изучать расположение крыжиков в виндовой fk0(338 знак., 16.09.2013 22:39)
- Зря ты так. Крыжики сделали программирование доступным несметной орде
ламеровкреативных индивидов :-) - SciFi(16.09.2013 22:48)- У них программирование заключается в подбирании такой комбинации крыжиков, пока не заработает? - fk0(16.09.2013 22:52)
- Не знаю, не пробовал. Если судить по Мазуру, то именно так :-) - SciFi(16.09.2013 22:58)
- У них программирование заключается в подбирании такой комбинации крыжиков, пока не заработает? - fk0(16.09.2013 22:52)
- А-а-а! Диск отмонтировать забыла!... - Mazur(16.09.2013 22:42)
- PS: GUI нужно запретить. По крайней мере для обучения. - fk0(16.09.2013 22:40)
- Зря ты так. Крыжики сделали программирование доступным несметной орде
- Проблема большинства современных "программистов", в том, что они не умеют работать с компьютером. Я поэтому и говорю -- изучай как в unix образца 80-х годов всё делалось. Там можно подсмотреть и понять. Изучать расположение крыжиков в виндовой fk0(338 знак., 16.09.2013 22:39)
- Включил опцию использовать файл такой-то. Строчка осталась. Но результата не вижу. - Mazur(16.09.2013 20:06)
- Оппа. А твоя строчка не сохранилась. - Mazur(16.09.2013 19:55)
- Ты про это? Ни хрена не изменилось. - Mazur(16.09.2013 19:54, ссылка)
- Чтобы PORTA остался в дизасме? Наверное нет, но есть выходной файл имя_проекта.lss, в котором показано во что каждая строчка компилится. Примерно так выглядит: Apтём(619 знак., 16.09.2013 19:18)
- В дизасме хрен с ним. Скорее всего и не сделать так. А вот если бы листинг так создавался, было бы кошерно. - Mazur(16.09.2013 19:20)
- Ну так создаётся же, или этот не устраивает? Чем? - Apтём(16.09.2013 19:23)
- В дизасме хрен с ним. Скорее всего и не сделать так. А вот если бы листинг так создавался, было бы кошерно. - Mazur(16.09.2013 19:20)
- Я тебе уже говорил, как включить листинг в gcc. Твой winavr -- внутри на самом деле это gcc. - fk0(16.09.2013 19:41)
- В студии есть дизассемблер. Хотя я видел, выложенные листинги, где асм более нагляден. Есть ли в winavr такое? Mazur(88 знак., 16.09.2013 19:06)
- Первый вариант самый оптимальный, независимо от наличия инструкций типа djnz. - Bill(16.09.2013 15:29)
- Просто Мазуру надо в свойствах компилятора включить генерацию асм-файлов и иногда заглядывать, что у него получается. Сравнить, например, что компилер сгенерит на while b на for. - VAI(16.09.2013 17:41)
- То ли еще будет, ой-ёй-ёй... - Bill(16.09.2013 15:07)
- Попробуй и так уже - не обязательно оптимальный для AVR, но без использования внешних переменных (dsp_buf) в теле функции Vit(416 знак., 16.09.2013 17:33 - 17.09.2013 09:37, ссылка, ссылка)