реклама на сайте
подробности

 
 
> Поменять местами биты в байте.
ps1x
сообщение May 9 2007, 09:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Допустим есть

0bXY000000.

Как сделать

0bYX000000?

Надо использовать битовые маски и логические операции, только вот с масками никак не разберусь...

И еще, есть ли в CVAVR функция, возвращающая № буквы, т.е. типа chr("a")=35 ?

С уважением.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение May 12 2007, 00:15
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата
Ведь и переносимость программ, написанных на том же самом С, в определенной степени условна даже внутри семейства, не говоря о разных семействах.

Позвольте с вами несогласиться.
Переносимость в большой мере зависит от нас самих, если хотите чтобы код был переносимым - пишите его таким сразу. ;>

Как так писать - создать прослойку между железом и программой - операционку. Писать программу уже не под железо а под ОС. То что код будет невсегда максимально эффективным, кого это волнует?
Go to the top of the page
 
+Quote Post
kv_addr
сообщение May 12 2007, 02:01
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(defunct @ May 12 2007, 03:15) *
Позвольте с вами несогласиться.
Переносимость в большой мере зависит от нас самих, если хотите чтобы код был переносимым - пишите его таким сразу. ;>

Если стоит задача переносимости, то - да. В противном случае - не обязательно.

Цитата(defunct @ May 12 2007, 03:15) *
Как так писать - создать прослойку между железом и программой - операционку. Писать программу уже не под железо а под ОС. То что код будет невсегда максимально эффективным, кого это волнует?

Опять же, зависит от поставленой задачи. "Толстые" задачи на "толстых" чипах удобнее решать таким образом. Но 128-ю Мегу применять там, где и Тиня управится, это как бы из пушки да по воробьям. А тут уж и ужиматься приходится. Инструментов для создания программы фактически всего-то два - ассемблер да Си. Ассемблер позволяет дать максимально эффективный код, но со значительной затратой времени. Си, при соответствующем подходе, может дать код не намного избыточнее, но создание программы идет значительно быстрее, поэтому является вполне разумным компромиссом и для мелких чипов. Вот тут, как раз, и нужны наработанные приемы получения компактного кода, пускай даже в ущерб переносимости.

"Кого ЭТО волнует?"© wink.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение May 12 2007, 02:42
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(kv_addr @ May 12 2007, 04:01) *
Но 128-ю Мегу применять там, где и Тиня управится, это как бы из пушки да по воробьям. А тут уж и ужиматься приходится. Инструментов для создания программы фактически всего-то два - ассемблер да Си. Ассемблер позволяет дать максимально эффективный код, но со значительной затратой времени. Си, при соответствующем подходе, может дать код не намного избыточнее, но создание программы идет значительно быстрее, поэтому является вполне разумным компромиссом и для мелких чипов. Вот тут, как раз, и нужны наработанные приемы получения компактного кода, пускай даже в ущерб переносимости.

Противоречие у Вас получается ;>
C одной стороны Вы говорите о Tiny с 1-2-4Kb памяти, с другой говорите о затратах времени при написании программы на ассемблере. 2Kb на C заполнить - дурное дело не хитрое - полчаса и вся память занята - это не просто сокращенные трудозатраты, это можно сказать их вообще нет. Но и функциональность такой программы в тиньке также получится "никакой".

Хотите функциональности - будьте добры потрудитесь - либо то 8k-16k на C выдавить, либо, что сравнимо по трудозатратам - 1-2k ассемблере. При этом на ассемблере вы получите оптимальный вариант кода естессно непереносимый на другие платформы. На C поизвращавшись тоже втиснете нечто сравнимое по функциональности но не в 2k, а скажем в 4k, при этом получить мало того, что непереносимый код, так еще и неоптимальный. Не проще уже тогда сделать переносимый и поставить более толстый чип?

Так что или asm в руки и программим тиньки, или C - но тогда уж начинаем с M16.
Go to the top of the page
 
+Quote Post
kv_addr
сообщение May 12 2007, 04:01
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(defunct @ May 12 2007, 05:42) *
Противоречие у Вас получается ;>
C одной стороны Вы говорите о Tiny с 1-2-4Kb памяти, с другой говорите о затратах времени при написании программы на ассемблере. 2Kb на C заполнить - дурное дело не хитрое - полчаса и вся память занята - это не просто сокращенные трудозатраты, это можно сказать их вообще нет. Но и функциональность такой программы в тиньке также получится "никакой".

Хотите функциональности - будьте добры потрудитесь - либо то 8k-16k на C выдавить, либо, что сравнимо по трудозатратам - 1-2k ассемблере. При этом на ассемблере вы получите оптимальный вариант кода естессно непереносимый на другие платформы. На C поизвращавшись тоже втиснете нечто сравнимое по функциональности но не в 2k, а скажем в 4k, при этом получить мало того, что непереносимый код, так еще и неоптимальный. Не проще уже тогда сделать переносимый и поставить более толстый чип?

Так что или asm в руки и программим тиньки, или C - но тогда уж начинаем с M16.

IMHO, ложное впечатление.

Не так давно рисовал программу для одного измерительного прибора. Изначально предполагалось выполнить на Меге8 как минимум, хоть алгоритм не очень сложный, но громозкой таблица получалась. Проанализировав таблицу, увидел, что зависимость достаточно близка к корню 4-й степени. После извлечения корня зависимость получилась значительно линейнее, поэтому таблица, учитывая, что для вычисления промежуточных результатов была применена кусочно-линейная аппроксимация, оказалась совсем маленькой. Вычисления все целочисленные. Только там, где необходимо было, использовались long. Поэтому сама математика много места не заняла. В результате все уместилось на Тини26 и даже чуть-чуть места осталось.

Просмотр ассемблерного листинга показал, что компилятор достаточно грамотно распорядился программной памятью и врядли чисто ассемблерный код оказался бы намного компактнее. Естественно, оптимизация по размеру была выбрана максимальной. Правда пришлось попробовать разные варианты сишного кода, и далеко не всегда более компактный сишный давал более компактный ассемблерный. Но в результате получилось все значительно быстрее и удобнее, чем если бы это всё выполнялось на ассемблере. Поэтому и для "тонких" чипов Си вполне идет.

PS: Да, кстати, забить 2 килобайта на Си всякой хренью за полчаса действительно - дурное дело нехитрое. Вот разумно распорядиться - заметно дольше получается. Но все же - получается. А относительно ассемблера, я отнюдь не являюсь ассемблерофобом. Напротив, знать его и уметь на нем код писать считаю необходимым.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ps1x   Поменять местами биты в байте.   May 9 2007, 09:43
- - zltigo   Цитата(ps1x @ May 9 2007, 12:43) Допустим...   May 9 2007, 10:22
|- - ps1x   Цитата(zltigo @ May 9 2007, 13:22) xxx = ...   May 9 2007, 10:36
||- - zltigo   Цитата(ps1x @ May 9 2007, 13:36) да нет, ...   May 9 2007, 10:46
||- - haker_fox   Цитата(ps1x @ May 9 2007, 18:36) да нет, ...   May 9 2007, 11:47
||- - ps1x   Цитата(haker_fox @ May 9 2007, 14:47) А к...   May 9 2007, 12:16
||- - haker_fox   Цитата(ps1x @ May 9 2007, 21:16) У меня е...   May 11 2007, 02:41
|- - Serg76   Цитата(zltigo @ May 9 2007, 13:22) xxx = ...   May 9 2007, 12:23
|- - ps1x   Цитата(Serg76 @ May 9 2007, 15:23) Как мн...   May 9 2007, 13:24
|- - Serg76   Цитата(ps1x @ May 9 2007, 16:24) Я это сд...   May 9 2007, 14:44
|- - zltigo   Цитата(Serg76 @ May 9 2007, 17:44) ....то...   May 9 2007, 15:16
|- - Edmundo   Цитата(Serg76 @ May 9 2007, 18:44) 1. Сдв...   May 9 2007, 15:30
|- - IgorKossak   Цитата(Serg76 @ May 9 2007, 17:44) Прошу ...   May 10 2007, 20:36
- - Laksus   Цитата(Serg76 @ May 9 2007, 14:23) Как мн...   May 9 2007, 15:00
- - xemul   Тупое решение в лоб Кодt = x; x &= 0x3f; if...   May 9 2007, 15:27
- - Visor   Есть такой флаг "Т", вот через него можн...   May 10 2007, 13:07
|- - kv_addr   Цитата(Visor @ May 10 2007, 16:07) Есть т...   May 11 2007, 00:34
|- - singlskv   Цитата(kv_addr @ May 11 2007, 04:34) На а...   May 11 2007, 15:27
|- - kv_addr   Цитата(singlskv @ May 11 2007, 18:27) Дли...   May 11 2007, 15:50
|- - singlskv   Цитата(kv_addr @ May 11 2007, 19:50) Пыта...   May 11 2007, 16:39
|- - kv_addr   Цитата(singlskv @ May 11 2007, 19:39) Дык...   May 11 2007, 20:13
|- - singlskv   Цитата(kv_addr @ May 12 2007, 00:13) IAR-...   May 11 2007, 21:05
|- - kv_addr   Цитата(singlskv @ May 11 2007, 23:20) А у...   May 11 2007, 21:07
|- - singlskv   Цитата(kv_addr @ May 12 2007, 01:07) Пров...   May 11 2007, 21:22
|- - kv_addr   Цитата(singlskv @ May 12 2007, 00:22) А в...   May 11 2007, 22:35
|- - Александр Куличок   Цитата(singlskv @ May 12 2007, 00:22) А в...   May 12 2007, 15:33
|- - singlskv   Цитата(Александр Куличок @ May 12 2007, 19...   May 12 2007, 21:12
- - Punk   Цитата(ps1x @ May 9 2007, 12:43) Допустим...   May 10 2007, 14:06
|- - Dog Pawlowa   Два порта контроллера закольцевать еще не предлага...   May 10 2007, 14:20
- - ae_   Цитата(ps1x @ May 9 2007, 18:43) Допустим...   May 11 2007, 02:04
|- - kv_addr   Цитата(ae_ @ May 11 2007, 05:04) асм, три...   May 11 2007, 14:47
|- - defunct   Цитата(kv_addr @ May 12 2007, 06:01) IMHO...   May 12 2007, 12:16
- - singlskv   Видимо самый быстрый вариант на С будет таким: Код...   May 12 2007, 12:05
- - sensor_ua   Цитатапрограммная реализация encoder'a/decoder...   May 12 2007, 15:09
|- - kv_addr   Цитата(sensor_ua @ May 12 2007, 18:09) Ду...   May 12 2007, 23:08
- - Александр Куличок   ЦитатаВсе правильно, в варианте с битом 7, компиля...   May 13 2007, 07:05


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 03:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016