Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Да ладно блин вам.. :-))) Головой думали или кю? Это как раз та задача, которая нормальным компилером с точностью до байта совпадёт с тем что вы на асме напишете. Если конечно вы умеете хорошо писать на асме.
Отправлено
Dr.Alex
31 августа 2007 г. 16:50
В ответ на:
"максимально быстро" и "ассемблер не предлагать". Как это сочетается? И сколько строк текста надо переписать, если "может быть будет другой контроллер" ?
отправлено <font color=gray>Крок.</font> 31 августа 2007 г. 16:48
Составить ответ
|
Вернуться на конференцию
Ответы
Вряд ли компилер, даже "нормальный", сумеет эффективно (или вообще даже) воспользоваться битом переноса в цепочке сдвигов, поэтому функция получится масочно-сдвигово-фиговой и будет уступать АСМовой в разы и больше. Низачот
—
=AVR=
(31.08.2007 16:58:31
80.92.96.19
,
пустое
)
Сам изачот.. :-)) Использовать перенос имеет смысл только при сдвиге на один бит, а аффтару надо на произвольное число бит, так что перенос там не поможет (+)
—
Dr.Alex
(31.08.2007 17:05:22
62.231.6.116
, 477 байт)
Да в лучше приведите фрагмент во что ваш компилер превратит эту команду. Чо спорить-то?
—
Крок.
(31.08.2007 18:15:53
62.118.59.14
,
пустое
)
RSB R1,R1,#+32 ; MOVS R0,R0, ROR R1 ; BX LR (aka ret)
—
TNKernel
(31.08.2007 18:47:14
212.58.192.14
,
пустое
)
PS, интересно вот, во что Крок бы её превратил :-DDD
—
TNKernel
(31.08.2007 18:48:29
212.58.192.14
,
пустое
)
Щас
—
Крок.
(31.08.2007 18:53:36
62.118.59.14
,
пустое
)
В пике это превращается в
—
Крок.
(31.08.2007 19:03:29
62.118.59.14
, 324 байт)
Твой код нерабочий - ошибки/описки/небрежности. Вот так - еще куда ни шло
—
=AVR=
(31.08.2007 20:56:26
80.92.96.19
, 561 байт)
Небрежности признаю. Не проверял.
—
Крок.
(01.09.2007 13:38:9
62.118.59.14
, 144 байт)
какого массива? Я про код, предлженный Алексом
—
TNKernel
(31.08.2007 19:05:21
212.58.192.14
,
пустое
)
Я не знаю, кто такой Алекс, но клиент просил сдвинуть массив на некоторое число бит
—
Крок.
(31.08.2007 19:07:18
62.118.59.14
,
пустое
)
" приведите фрагмент во что ваш компилер превратит эту команду." В ответ на ROTL от Dr.Alex
—
TNKernel
(31.08.2007 19:08:55
212.58.192.14
,
пустое
)
ААА. понял. И эта команда выполняет тербования ТЗ?
—
Крок.
(31.08.2007 19:17:37
62.118.59.14
,
пустое
)
нет, она приведена в качестве примеро того, насколько современный компилятор легко и изящно делает то, что ты еще и понять успел, что собственно делается
—
TNKernel
(31.08.2007 19:18:58
212.58.192.14
,
пустое
)
гы, 8-битники жгут :-D (+)
—
TNKernel
(31.08.2007 19:03:21
212.58.192.14
, 1786 байт)
Ну, компиляторо-зависимо. Хотя всё равно не фонтан. Это я о ROTL
—
ReAl
(31.08.2007 20:57:4
89.162.152.53
, 909 байт)
Жуть...
—
=AVR=
(31.08.2007 21:30:38
80.92.96.19
,
пустое
)
Чума!
—
Крок.
(31.08.2007 19:06:8
62.118.59.14
,
пустое
)
Дабля... и эти люди запрещают мне ковырять в н.. ассемблере??
—
=AVR=
(31.08.2007 19:14:7
80.92.96.19
,
пустое
)
любопытно было бы глянуть, для чистоты - 8 битный вариант
—
TNKernel
(31.08.2007 19:16:42
212.58.192.14
,
пустое
)
Я же привёл пример для ПИКа. Думаю, АВРофилы сделают не страшней.
—
Крок.
(31.08.2007 19:20:5
62.118.59.14
,
пустое
)
это аналог какого Сишного кода?
—
TNKernel
(31.08.2007 19:21:37
212.58.192.14
,
пустое
)
Это решение задачи.
—
Крок.
(31.08.2007 19:23:52
62.118.59.14
,
пустое
)
это сдвиг всего массива на произвольное число байт? Тогда пасс
—
TNKernel
(31.08.2007 19:25:30
212.58.192.14
,
пустое
)
бит то есть
—
TNKernel
(31.08.2007 19:26:4
212.58.192.14
,
пустое
)
Вист.
—
Крок.
(31.08.2007 19:28:38
62.118.59.14
,
пустое
)
Порт 1:1 для AVR - 12 строк, но по тактам почти вдвое хуже - гребаная Load/Store (PIC = 4 + 10*бит + 4*байт тактов, AVR = 8 + 14*бит + 8*байт тактов) -->
—
=AVR=
(31.08.2007 21:27:35
80.92.96.19
, 612 байт)
"ваш компилер" может быть только у туамоса. Тут бывают иаровские, кейловские, гнутые и иже с ними :) :) :)
—
SM
(31.08.2007 18:23:33
85.21.237.237
,
пустое
)
Ну у Дохтурского компилера и указатель может быть дробным , так что вообще в одну команду управится.
—
Крок.
(31.08.2007 18:25:7
62.118.59.14
,
пустое
)
На N бит если, как в условии, то перенос не поможет. Так что компилер может и зачотно все сделает. А вот на 1 бит - другое дело.
—
SM
(31.08.2007 17:02:45
85.21.237.237
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 89:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru